【问题标题】:Navigation Drawer header Imageview not getting updated导航抽屉标题 Imageview 未更新
【发布时间】:2019-03-22 02:15:55
【问题描述】:

我正在尝试使用回调接口将图像从片段加载到导航抽屉标题。我调试了应用程序,发现传递的字符串 url 是有效的,但是 picasso 无法在 header Imageview 中加载图像。

这是我的回调接口代码:

    @Override
public void changeUserStatus(boolean isLogin, String email,String profilePhotoUrl) {
    if (isLogin) {
        logoutBTN.setText(R.string.logout);
        //Toast.makeText(MainScreenActivity.this,email,Toast.LENGTH_SHORT).show();
        userEmail.setText(email);
    }

    if (!profilePhotoUrl.equals("")) {
        Picasso.with(getApplicationContext()).load(profilePhotoUrl).placeholder(R.drawable.logo).noFade().into(navImageView);
    }
    else {
        navImageView.setImageResource(R.drawable.logo);
    }
}

这是我的导航标题 ImageView 的 xml 布局:

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="@color/White"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical">
        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/profile_image"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_marginTop="10dp"
            android:src="@drawable/logo">
        </de.hdodenhof.circleimageview.CircleImageView>
        <TextView
            android:gravity="center_horizontal"
            android:id="@+id/email_header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text=""
            android:textColor="@color/Black"
            android:textSize="14sp" />
        <TextView
            android:id="@+id/logoutBTN"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:gravity="center_horizontal"
            android:paddingBottom="4dp"
            android:text="@string/login_txt"
            android:textAllCaps="true"
            android:textColor="@color/Black"
            android:textSize="16sp"
            android:textStyle="bold"
            android:typeface="sans" />
    </LinearLayout>
</RelativeLayout>

我已经在我的活动 onCreate() 中初始化了导航标题 ImageView:

    navigationView.setNavigationItemSelectedListener(this);
    navigationView.inflateHeaderView(R.layout.nav_header);
    View header = navigationView.getHeaderView(0);
    userEmail = (TextView) header.findViewById(R.id.email_header);
    logoutBTN = (TextView) header.findViewById(R.id.logoutBTN);
    navImageView = (ImageView) header.findViewById(R.id.profile_image);

任何帮助将不胜感激。

【问题讨论】:

  • 给毕加索添加一个图片加载监听器,看看加载有什么问题
  • 你的profilePhotoUrl是什么?
  • 它是一个 png 图片

标签: android android-layout imageview navigation-drawer picasso


【解决方案1】:

当我遇到这类问题时,我将一个 Android id 添加到实际导航视图本身,然后在导航标题初始化之前将一个变量初始化为 NavigationView。

View navView = (NavigationView) findViewById(R.id.nav_view);
View navHead = (NavigationHeader) navView.getHeaderView(0);
Textview tvEmail = (TextView) navHead.findViewById(R.id.userEmail); 
tvEmail.setText("theusersemail@whatever.com");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多