一个“布局”目录但多个“值”目录? [Android]产品

时间:2014-01-28 12:43:50

标签: android android-layout

我的目标是支持多种屏幕分辨率,因此提出了一种解决方案,不知道是否推荐这种方式。它甚至没有工作。

我有一个布局目录,该文件夹中的文件说是

<LinearLayout
    android:id="@+id/result_area"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_gravity="left|center_vertical"
    android:layout_weight=".40"
    android:orientation="vertical"
    android:paddingBottom="@string/result_bottom"
    android:paddingLeft="@string/result_left"
    android:paddingRight="@string/result_right"
    android:paddingTop="@string/result_top" >

我可以通过改变填充值来为所有分辨率提供支持,因此创建了4个“值”目录值-ldpi,values-hdpi等等。它们都有strings.xml并在字符串文件中给出了适当的值。

通过选择不同的分辨率但在执行..崩溃并给出异常时预览图形布局中的布局时,可以完美地获取值:

 java.lang.RuntimeException: Unable to start activity : android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>

第8行是<LinearLayout

3 个答案:

答案 0 :(得分:2)

您的维度值应位于文件名dimension.xml中,内容如下:

<resources>
    <dimen name="padding_size">10dp</dimen>
</resources>

然后你在你的布局中引用它:

android:paddingBottom="@dimen/padding_size"

您不能使用字符串,因为它们不传达指标和单位信息。

答案 1 :(得分:1)

Strings.xml用于...字符串和本地化,如果要访问数值,请在values目录中创建dimen.xml(文件名无关紧要)并输入这样的值...

<dimen name="result_top">16dp</dimen>

然后你可以在代码中使用getResources()。getDimension(R.dimen.result_top)...或xml中的字符串访问它们。

答案 2 :(得分:1)

要引用资源目录中的值,请使用:@dimen而不是@string。也使用正确的标签

<dimen name="key">value</dimen> 

而不是

<string name="key">value</string>