从自定义URL加载导航抽屉标题中的图像

问题描述 投票:1回答:2

我没有使用任何自定义库来制作导航视图。我正在使用支持设计库中的导航视图。如何使用Glide或Fresco将Header图像设置为来自Internet的自定义图像。目前我有一个静态ImageView作为抽屉标题。

编辑 - 图像需要大小?

android android-glide android-design-library
2个回答
6
投票

您可以在XML file中为Navigation Header设置:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/colorPrimaryDark"
    android:gravity="center_vertical"
    android:orientation="vertical"
    android:paddingBottom="@dimen/nav_header_margin_bottom"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/nav_header_margin_top"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"    
        android:adjustViewBounds="true"
        android:scaleType="fitXY"/>

</LinearLayout>

并使用GlideMainActivity中使用url设置图像:

    private NavigationView navigationView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        //NavigationHeader
        View header = navigationView.getHeaderView(0);
        imageView = (ImageView) header.findViewById(R.id.imageView);

            Glide
                .with(context)
                .load("your url")
                .placeholder(R.drawable.priceshoes)
                .error(R.drawable.priceshoes)
                .into(imageView);
    }

6
投票

在我的情况下,如果我不使用这些行:

    View header = navigationView.getHeaderView(0);
    imageView = (ImageView) header.findViewById(R.id.imageView);

我会得到错误“目标必须不为空”,因为在我的setContentView()方法中,我调用activity_main,并且配置文件图片的ImageView在单独的xml中的标题布局中。

© www.soinside.com 2019 - 2024. All rights reserved.