Java 如何使CircleImageView在NavigationView抽屉中可单击
你好,我知道这个问题已经被问过了。但就这个话题而言,他们的解决方案都不适合我。 我编译了gradle-Java 如何使CircleImageView在NavigationView抽屉中可单击,java,android,android-navigationview,circleimage,Java,Android,Android Navigationview,Circleimage,你好,我知道这个问题已经被问过了。但就这个话题而言,他们的解决方案都不适合我。 我编译了gradle-编译'de.hdodenhof:circleimageview:1.3.0' . 我创建了header.xml <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/profile_image"
编译'de.hdodenhof:circleimageview:1.3.0'
. 我创建了header.xml
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="80dp"
android:layout_height="80dp"
app:border_color="#FF000000"
android:layout_marginLeft="24dp"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_margin="@dimen/activity_vertical_margin"
android:layout_marginStart="@dimen/activity_vertical_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:src="@drawable/avatar"
android:foreground="?attr/selectableItemBackground"
android:onClick="onClick"
android:clickable="true" />
在我的java文件activity\u main.java
中,我尝试了onClickListener,但它会停止我的程序-nullPointerException(无法映射我的circleImageView findViewById)。如果我单击圆形图像,即使是setNavigationItemSelectedListener也不会启动意图
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
int id = menuItem.getItemId();
switch (id){ // INTENTS HERE}
}
有没有办法让它可以点击?首先,您必须访问用于充气的头部布局,可以这样做
View headerLayout = navigationView.getHeaderView(0);
然后,从headerLayout可以使用
ImageView profileimage=(ImageView)headerLayout.findViewById(R.id.yourImage)代码>
然后,您可以将其设置为可点击。首先,您必须访问用于充气的头部布局,可以执行以下操作:
View headerLayout = navigationView.getHeaderView(0);
然后,从headerLayout可以使用
ImageView profileimage=(ImageView)headerLayout.findViewById(R.id.yourImage)代码>
然后,您可以将其设置为可点击。这是导航头\u main.xml
(此处布局表示宽度和高度,如包裹内容所示)
这是nav_header\u main.xml
(此处布局表示宽度和高度,如包裹内容所示)
我可以知道为什么是getHeaderView(0)吗?这是指它的堆栈队列吗?我可以知道为什么它是getHeaderView(0)吗?这是指它的堆栈排列吗?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/nav_header"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/navimgProfile"
android:layout_width="@dimen/eighty_dp"
android:layout_height="@dimen/eighty_dp"
android:layout_gravity="center_horizontal"
app:civ_border_color="@color/white" />
<TextView
android:id="@+id/nav_profile_name"
style="@style/Layout_mw"
android:gravity="center"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Android Studio" />
<TextView
android:id="@+id/pro_location"
style="@style/Layout_mw"
android:layout_marginTop="@dimen/ten_dp"
android:gravity="center"
android:text="android.studio@android.com" />
</LinearLayout>
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
View header = navigationView.getHeaderView(0);
CircleImageView imgProfile = (CircleImageView) header.findViewById(R.id.navimgProfile);
proName = (TextView) header.findViewById(R.id.nav_profile_name);
proLocation = (TextView) header.findViewById(R.id.pro_location);
proName.setText(USERNAME);
proLocation.setText(Navemail);