0

我看到在 android attrs.xml (data/res/values/attrs.xml) 中声明的维度常量,例如

<attr name="padding" format="dimension" />
<!-- Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}. -->
<attr name="paddingLeft" format="dimension" />
<!-- Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}. -->
<attr name="paddingTop" format="dimension" />
<!-- Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}. -->
<attr name="paddingRight" format="dimension" />

如果我是正确的,则该值在 ./data/res/values/styles.xmlas <item name="android:paddingLeft">20dp</item>等中定义。

这些是某种“首选”尺寸值吗?这些值在发布之间是否相对稳定,以便直接使用这些常量不会影响外观。

谢谢。

编辑:

为了澄清一点,我想知道在我的视图布局中使用这些“android”定义的值的含义,比如。

<TextView android:text="@string/text"
    android:layout_width="wrap_content"
    android:layout_height="?android:attr/listPreferredItemHeightSmall"
    android:paddingStart="?android:attr/expandableListPreferredItemPaddingLeft"/>

我没有定义这些值,而是在 android 命名空间中引用它。这样做安全吗?

4

2 回答 2

2

正如您可以Drawables使用不同的后缀创建一样,Layouts使用后缀,您可以通过不同的后缀创建values目录,例如

values
values-large "or" values-sw600dp
values-xlarge "or" values-sw720dp

在此,您可以创建常量。这将有助于创建动态布局。

假设您需要为普通屏幕和平板电脑创建布局,两者都需要不同的间距。那你会怎么做?创建两个不同的布局?或者只是在values目录中添加两个条目?

答案是values目录。它的高效。

编辑

布局.xml

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/margin_left">

你已经定义了margin_left里面valuesvalues-sw600dp目录,比如

<dimen name="margin_left">20dp</dimen>

<dimen name="margin_left">40dp</dimen>

分别。这将为您提供更多想法来创建一种layout有效的处理方式。

于 2013-02-12T06:44:50.257 回答
0

我不确定我是否正确理解了这个问题,但如果你使用独立的单位,如 dp、dip、sp 等,而不是像素的原始值,那么它在不同的设备上看起来是一样的。您可以在这里阅读:http: //developer.android.com/guide/practices/screens_support.html

于 2013-02-12T06:42:24.967 回答