我试图为我的一个项目和这里实施材料设计,下面提到,
导航抽屉的最大宽度是标准增量的5倍(移动56 on,平板64 on )。
因此,我想知道如何实现这些宽度的导航抽屉移动和平板电脑。我想给各自的设备制作不同的宽度,无论是手机还是平板电脑。
我很想使用XML,即使这也可以用Java完成。
谢谢。
发布于 2015-02-18 02:28:43
在项目中创建值-sw600dp文件夹,并在其中添加dimens.xml文件。定义值和值的dimens.xml文件中的宽度-sw600dp文件夹
对于值-sw600dp/ddens.xml
<resources>
<dimen name="width">300dp</dimen></resources>用于值/dwens.xml
<resources><dimen name="width">150dp</dimen> </resources>用这种方式来称呼它
android:layout_width="@dimens/width"发布于 2015-02-18 02:11:38
您需要为每个设备定义两个不同的dimens.xml,然后只需从布局中引用dimen即可。
├── res
│ ├── values
│ │ ├── dimens.xml // Contains an item with 56dp
│ ├── values-sw600dp
│ │ ├── dimens.xml // Contains an item with 64dp发布于 2015-02-18 03:57:02
在java中,我做了以下工作来修复纵向和横向模式的宽度,您可以使用带有显示度量的ifs将其扩展到显示。
// Setup Navigation drawer
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
View drawer = findViewById(R.id.scrimInsetsFrameLayout);
// Fix right margin to 56dp (portrait)
ViewGroup.LayoutParams layoutParams = drawer.getLayoutParams();
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
layoutParams.width = displayMetrics.widthPixels - (56 * Math.round(displayMetrics.density));
}
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
layoutParams.width = displayMetrics.widthPixels + (20 * Math.round(displayMetrics.density)) - displayMetrics.widthPixels / 2;
}顺便说一下,在您的情况下,我应该使用前面的答案(每个版本/模式/设备都使用dimen)。
https://stackoverflow.com/questions/28574506
复制相似问题