我正在尝试更改导航抽屉文本字段,名为" usernameDrawer"和" emailDrawer"通过使用命令setText。除此之外,我还尝试更改名为" userPicDrawer"的ImageView。这是我的xml代码:
<?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="@dimen/nav_header_height"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
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">
<ImageView
android:id="@+id/userPicDrawer"
android:layout_width="wrap_content"
android:adjustViewBounds="true"
android:layout_height="wrap_content"
android:contentDescription="@string/nav_header_desc"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:scaleType="fitCenter"
app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/usernameDrawer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/nav_header_title"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/emailDrawer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nav_header_subtitle" />
</LinearLayout>
以下是它的外观:
这是我用来改变它们的代码:
View headerView = navigationView.getHeaderView(0);
TextView navUsername = headerView.findViewById(R.id.usernameDrawer);
navUsername.setText(loggedInUser.getUsername());
TextView navEmail = headerView.findViewById(R.id.emailDrawer);
navEmail.setText(loggedInUser.getEmail());
byte[] x = Base64.decode(loggedInUser.getUserPic(), Base64.DEFAULT);
Bitmap bmp= BitmapFactory.decodeByteArray(x,0,x.length);
ImageView navImage = headerView.findViewById(R.id.userPicDrawer);
navImage.setImageBitmap(bmp);
问题在于,使用上面代码改变的唯一因素是pic,&#34; usernameDrawer&#34;和&#34; emailDrawer&#34;没有设定。我已经检查过getUsername()和getEmail()方法是否返回字符串。他们这样做。
不仅如此,在我在userPicDrawer中设置pic后,ImageView会调整大小,覆盖文本所在的位置,并且不保持其在xml中设置的宽高比。如果我没有用bmp图片填充ImageView,不仅保持纵横比,而且其他字段也按字符串设置。
如何使用我给出的字符串设置文本字段以及如何保持ImageView不会调整大小?谢谢。