【问题标题】:Different width for Navigation Drawer in Tablet and Phone平板电脑和手机导航抽屉的宽度不同
【发布时间】:2015-04-18 21:59:48
【问题描述】:

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

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

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

我很想使用 XML,即使这也可以使用 Java 来完成。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    在您的项目中创建 values-sw600dp 文件夹并在其中添加 dimens.xml 文件。 在 dimens.xml 文件中定义 values 和 values-sw600dp 文件夹的宽度

    对于值-sw600dp/dimens.xml

        <resources>
        <dimen name="width">300dp</dimen></resources>
    

    对于值/dimens.xml

        <resources><dimen name="width">150dp</dimen>   </resources>
    

    以这种方式调用它

       android:layout_width="@dimens/width"
    

    【讨论】:

      【解决方案2】:

      你需要为每个设备定义两个不同的dimens.xml,然后你只需要从你的布局中引用dimen

      ├── res
      │   ├── values
      │   │   ├── dimens.xml // Contains an item with 56dp
      │   ├── values-sw600dp
      │   │   ├── dimens.xml // Contains an item with 64dp
      

      【讨论】:

        【解决方案3】:

        在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;
            }
        

        顺便说一句,在您的情况下,我应该使用之前的答案(每个版本/模式/设备的维度)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-07
          • 2013-06-12
          • 1970-01-01
          • 2018-05-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多