public DrawerProfile(Context context) { super(context); HeaderImageView = new ImageView(context); HeaderImageView.setVisibility(VISIBLE); HeaderImageView.setScaleType(ImageView.ScaleType.CENTER); HeaderImageView.setImageResource(R.mipmap.drawer_background_image); addView(HeaderImageView); }
我想在Drawer中添加一个图像,它应该覆盖抽屉头的整个区域.我想知道图像(分辨率)的大小应该是多少;适用于各种屏幕分辨率的手机.如何最小化照片的大小?
在此屏幕截图中,标题图像未覆盖Drawer的整个区域
解决方法
我最近制作了一个应用程序并对几乎所有材料设计方面进行了彻底的研究,所以我想在这里分享我的经验,它可能对你有帮助.
第1篇浏览this精彩文章,它将指导您设置导航抽屉,其中包含与其一起使用的每个属性和视图.
抽屉图像应该是或通常是导航抽屉宽度的16/9.
(HeaderHeight = NavDrawerWidth * 9/16)
我使用了576×324像素的图像(非常干净漂亮的图片,接近27KB)并将其放入drawable-nodpi中以避免自动缩放和内存问题.
我使用宽度为304dp的导航抽屉(大多数情况下,你会发现它,在谷歌应用程序上,但他们也在一些应用程序上使用320dp,如播放音乐,环聊等).
除平板电脑外,几乎所有设备的HeaderImage高度可能保持不变.
对于直到sw-480dp-xxxhdpi的设备,使用抽屉宽度304dp和头部高度170dp.
从上面的设备sw-600dp,至少使用抽屉宽度400dp和头部图像高度225dp.
这是我的drawer_header.xml
<?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="@dimen/navDrawer_header_height" android:background="@drawable/img_navdrawer_header" android:gravity="bottom" android:orientation="vertical" android:padding="16dp" android:theme="@style/ThemeOverlay.AppCompat.Dark" > </LinearLayout>
这就是我在NavigationView中使用它的方式
<android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="@dimen/nav_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer" />
现在是时候设置它们的边界,/ res / values / dimens /
<dimen name="nav_drawer_width">304dp</dimen> <dimen name="navDrawer_header_height">170dp</dimen>
对于平板电脑:/ res / values-sw600dp /,/ res / values / sw-720dp
<dimen name="nav_drawer_width">400dp</dimen> <dimen name="navDrawer_header_height">225dp</dimen>
希望这有助于某人.