在导航抽屉中设置图像时标题和电子邮件消失

时间:2018-06-17 10:27:41

标签: android

我正在尝试更改导航抽屉文本字段,名为" 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>

以下是它的外观:

enter image description here

这是我用来改变它们的代码:

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不会调整大小?谢谢。

0 个答案:

没有答案