【问题标题】:How to specify fixed layout_marginLeft for smartphones and wrap_content for tablet for NavigationDrawer如何为 NavigationDrawer 指定智能手机的固定 layout_marginLeft 和平板电脑的 wrap_content
【发布时间】:2017-02-27 14:08:07
【问题描述】:

我有下面的导航抽屉,我想将layout_marginLeft 作为-64dp 用于智能手机,wrap_content 用于平板电脑。 请告诉我该怎么做?我不想为智能手机和平板电脑创建单独的laytout.xml 文件,即我只有一个layout.xml 文件。截至目前,我在为智能手机和标签创建的 dimes.xml 文件中指定了不同的维度。

<!-- The navigation drawer -->
<android.support.design.widget.NavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:layout_marginLeft="-64dp"

【问题讨论】:

    标签: android android-layout android-fragments navigation-drawer


    【解决方案1】:

    假设你知道如何为multiple screens创建不同的dimes.xml文件(如果你不知道看看How to define dimens.xml for every different screen size in android?)你的问题应该是如何在特定的xml文件中设置android:layout_marginLeft使用维度值。

    你可以试试这个方法

    对于wrap_content> &lt;dimen name="your_value"&gt;-2dp&lt;/dimen&gt;

    对于match_parent> &lt;dimen name="your_value"&gt;-1dp&lt;/dimen&gt;

    并设置android:layout_marginLeft="@dimen/your_value"

    【讨论】:

    • 感谢您的回报...但是您的方法不起作用...它给出的错误为 android.view.InflateException: Binary XML file line #57: Can't convert to dimension: type=0x10
    • @kumar 你有没有给出 dp 中的值,只是给出一个值会引发该错误,这对我来说非常有用,接下来仔细检查你是否给出了所有的值你的 xmls 不仅仅是一个
    【解决方案2】:

    您只需为所有屏幕尺寸创建 5 个具有相同名称(布局文件)的布局文件并将其存储到不同的文件夹中(hdpi、mdpi、xhdpi、xxhdpi、xxxhdpi)。

    【讨论】:

    • 阅读并回答@Kumari op 说我不想为智能手机和平板电脑创建单独的laytout.xml 文件
    • 然后你可以为不同的屏幕分辨率制作尺寸
    • 很好,您可能希望使用相关示例更新您的答案:)
    • 对于平板电脑,您必须创建 values-sw720dp 和 values-sw600dp 并在其中创建一个dimens.xml 并声明您的规则
    • 是否得到解决方案
    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多