我正在尝试为我的一个项目和here实施材料设计,提到了以下内容,
导航抽屉的最大宽度是标准的5倍 增量(移动设备为56dp,平板电脑为64dp)。
所以我想知道如何为移动和平板电脑的导航抽屉实现这些宽度。我想为各自的设备(手机或平板电脑)制作不同的宽度。
即使使用Java也可以使用XML。
谢谢。
答案 0 :(得分:3)
在项目中创建values-sw600dp文件夹,并在其中添加dimens.xml文件。 在dimens.xml文件中定义值和值-sw600dp文件夹
的宽度对于values-sw600dp / dimens.xml
<resources>
<dimen name="width">300dp</dimen></resources>
对于values / dimens.xml
<resources><dimen name="width">150dp</dimen> </resources>
以这种方式调用
android:layout_width="@dimens/width"
答案 1 :(得分:1)
您需要定义与每个设备对应的两个不同的dimens.xml,然后您只需要从布局中引用维度
├── res
│ ├── values
│ │ ├── dimens.xml // Contains an item with 56dp
│ ├── values-sw600dp
│ │ ├── dimens.xml // Contains an item with 64dp
答案 2 :(得分:0)
在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;
}
在你的情况下BTW我应该使用之前的答案(每个版本/模式/设备的尺寸)。