如何在不同的Android屏幕中正确使用不同的尺寸资源

时间:2016-07-19 08:46:21

标签: android xml android-layout

我的res文件夹中有4个不同的值文件夹,里面有不同的dimens.xml。每个dimens.xml文件都有不同的值。我得到的文件夹如下:

values/dimens.xml
values-sw320dp/dimens.xml
values-sw480dp/dimens.xml
values-sw600dp/dimens.xml

问题是当我运行我的应用程序时,似乎使用的值是存储在values-sw320dp/dimens.xml中的dimens.xml值,即使我在Google Nexus 5模拟器中运行它也是如此。

示例用法是:

<TextView
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center_vertical"
     android:text="Account "
     android:textSize="@dimen/common_textSize_n" />

我做错了什么? 或者,对于不同的屏幕尺寸使用不同尺寸值的正确方法是什么?

非常感谢任何帮助。非常感谢你!

我很抱歉这个问题似乎有多重复。我只是没有找到已经问过的问题的答案。

2 个答案:

答案 0 :(得分:1)

你必须在每个文件夹中放置不同的值。而dimens.xml将是默认值,如果缺少任何维度,它将在那里形成。以及所有其他情况下,它将根据屏幕大小获取值。你正在做的是正确的,你也可以为mdpi,xhdpi,hdpi,xhdpi等添加更多的维度。

答案 1 :(得分:1)

将文件夹名称重命名为值-w max_size dp

E.g。 : -

  • 值-w320dp
  • 值-w600dp
  • 值-w820dp

每个文件夹都有一个文件,即dimens.xml。 让我们举个例子,如果你有&#34; feed_title_size&#34; dimen,在任何布局文件中使用。 您希望使用此维度设置textSize但是针对不同的屏幕分辨率。那么你需要在每个分辨率文件夹中创建dimens.xml文件(例如,values-w320dp) 并使用&#34; feed_title_size&#34;在其中创建一个维度属性。资源标记内的名称。 所以&#34; feed_title_size&#34;将出现在多个dimens.xml文件中,并将根据屏幕分辨率自动选择适当的值。

这是values-w320dp文件夹中的dimens.xml,如下所示:

<resources>
    <dimen name="feed_name_handle_width">100dp</dimen>
</resources>

这是values-w640dp文件夹中的dimens.xml,如下所示:

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

这是包含在values文件夹中的原始dimens.xml文件。该文件是默认文件。

<resources>
    <dimen name="feed_text_width">50dp</dimen>
</resources>

这是包含TextView

的布局文件
<android.support.v7.widget.AppCompatTextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:textSize="@dimen/feed_text_width" />