如何在资源文件中引用android:gravity值?

时间:2013-01-28 21:29:52

标签: android android-layout

我有一个TextView的布局,我希望从另一个资源文件android:gravity中提取android:gravity="@???/item_align"属性值,其中item_align是一个名称另一个xml文件中的资源。布局中使用的典型值centerbottombottom|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" />

3 个答案:

答案 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 /:

中添加到integers.xml
 <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>