我的目标是支持多种屏幕分辨率,因此提出了一种解决方案,不知道是否推荐这种方式。它甚至没有工作。
我有一个布局目录,该文件夹中的文件说是
<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
答案 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>