attrs.xml中的Android常量

时间:2013-02-12 06:38:26

标签: android

我看到在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.xml<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命名空间中引用它。这样做是否安全?

2 个答案:

答案 0 :(得分:1)

由于您可以使用不同的后缀创建DrawablesLayouts使用后缀,您可以通过不同的后缀创建values目录,例如

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

在此,您可以创建常量。这在创建动态布局时很有用。

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

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

修改

layout.xml

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

您已在margin_leftvalues目录中定义values-sw600dp,如

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

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

分别。这将为您提供更多创意layout和高效处理的想法。

答案 1 :(得分:0)

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