平板电脑和手机中导航抽屉的宽度不同

时间:2015-02-18 01:39:15

标签: android android-layout material-design tablet android-screen-support

我正在尝试为我的一个项目和here实施材料设计,提到了以下内容,

  

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

所以我想知道如何为移动和平板电脑的导航抽屉实现这些宽度。我想为各自的设备(手机或平板电脑)制作不同的宽度。

即使使用Java也可以使用XML。

谢谢。

3 个答案:

答案 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我应该使用之前的答案(每个版本/模式/设备的尺寸)。