我有一个TextView
的布局,我希望从另一个资源文件android:gravity
中提取android:gravity="@???/item_align"
属性值,其中item_align
是一个名称另一个xml文件中的资源。布局中使用的典型值center
或bottom
或bottom|center_horizontal
不起作用。如果我用实际整数值替换字符串(“center”替换为0x011),@???
中的整数是什么类型。但是,这不是一个好的解决方案。
所以,问题:我如何引用布局文件中的值,以及该项目在资源文件中的含义是什么?
<TextView
android:id="@+id/item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_margin="1dp"
android:layout_centerHorizontal="true"
android:gravity="@???/item_align"
android:text="65"
android:textSize="20sp"
android:typeface="sans"
android:textStyle="bold"
android:textColor="#000000" />
答案 0 :(得分:15)
<强>概念强>
android:gravity="@integer/integer_name"
integers.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer
name="integer_name"
>1</integer>
</resources>
重力值都是整数常量,您必须查找它并在integers.xml中定义它。
示例实施:
public static final int CENTER ...常数值:17(0x00000011)
在docs中......然后在res / values /:
<integer
name="center"
>17</integer>
并在你的xml中,执行:
android:gravity="@integer/center"
答案 1 :(得分:9)
你走了。
<integer name="gravity_bottom">80</integer>
<integer name="gravity_center">17</integer>
<integer name="gravity_center_horizontal">1</integer>
<integer name="gravity_center_vertical">16</integer>
<integer name="gravity_end">8388613</integer>
<integer name="gravity_left">3</integer>
<integer name="gravity_no_gravity">0</integer>
<integer name="gravity_right">5</integer>
<integer name="gravity_start">8388611</integer>
<integer name="gravity_top">48</integer>
答案 2 :(得分:0)
为了不破坏标准常量并避免在Android Studio中以红色突出显示,您可以在/ values和/ values-sw600dp文件夹中创建两种样式(在styles.xml中)
/values/styles.xml
<style name = "AppContainerLayout">
<item name = "android:gravity">top|start</item>
</style>
/values-sw600dp/styles.xml
<style name = "AppContainerLayout">
<item name = "android:gravity">center</item>
</style>
只需在布局中使用
<LinearLayout
style = "@ style/AppContainerLayout"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:orientation = "vertical">
// childs
</LinearLayout>