正在从自定义 URL 的导航抽屉 header 中加载图像
Loading image in the Navigation Drawer header from custom URL
我没有使用任何自定义库来制作导航视图。我正在使用支持设计库中的导航视图。我如何使用 Glide 或 Fresco 将 Header 图像设置为来自 Internet 的自定义图像。目前我有一个静态 ImageView 作为抽屉 Header。
编辑 - 图片需要多大?
您可以在 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>
并使用 Glide
在 MainActivity
中设置带有 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);
}
就我而言,如果我不使用这些行:
View header = navigationView.getHeaderView(0);
imageView = (ImageView) header.findViewById(R.id.imageView);
我会收到错误 "Target must be not null",因为在我的 setContentView() 方法中我调用了 activity_main 并且个人资料图片的 ImageView 位于单独 xml 的页眉布局中.
我没有使用任何自定义库来制作导航视图。我正在使用支持设计库中的导航视图。我如何使用 Glide 或 Fresco 将 Header 图像设置为来自 Internet 的自定义图像。目前我有一个静态 ImageView 作为抽屉 Header。
编辑 - 图片需要多大?
您可以在 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>
并使用 Glide
在 MainActivity
中设置带有 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);
}
就我而言,如果我不使用这些行:
View header = navigationView.getHeaderView(0);
imageView = (ImageView) header.findViewById(R.id.imageView);
我会收到错误 "Target must be not null",因为在我的 setContentView() 方法中我调用了 activity_main 并且个人资料图片的 ImageView 位于单独 xml 的页眉布局中.