平板和手机导航抽屉宽度不同

3
我正在尝试为我的项目实现Material Design,在这里,提到了以下内容:

导航抽屉的最大宽度是标准增量的5倍(移动设备上为56dp,平板电脑上为64dp)。

所以我想知道如何为移动设备和平板电脑的导航抽屉实现这些宽度。我想为各自的设备制作不同的宽度。
我希望能使用XML,即使也可以使用Java。
谢谢。
3个回答

4
在您的项目中创建values-sw600dp文件夹,并在其中添加dimens.xml文件。在值和values-sw600dp文件夹的dimens.xml文件中定义宽度。
对于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
你需要为每个设备定义两个不同的dimens.xml文件,然后只需从你的布局中引用dimen即可。
├── res
│   ├── values
│   │   ├── dimens.xml // Contains an item with 56dp
│   ├── values-sw600dp
│   │   ├── dimens.xml // Contains an item with 64dp

0
在Java中,我通过以下方式来修复纵向和横向模式的宽度,您可以使用显示度量标准和if语句将其扩展到显示器上。
    // 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)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接