12

我有一个带有 a 的布局,TextView我希望android:gravity从另一个资源文件中提取属性值android:gravity="@???/item_align",其中item_align是另一个 xml 文件中资源的名称。布局中使用的典型值,或者center不起作用。如果我将字符串替换为实际的整数值(“中心”替换为 0x011),则 , integer中的类型有效。但是,这不是一个好的解决方案。bottombottom|center_horizontal@???

那么,问题是:如何引用布局文件中的值,以及资源文件中的项目是什么样的?

<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" />
4

3 回答 3

17

概念:

 android:gravity="@integer/integer_name"

整数.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)


文档中...然后在 res/values/ 中添加到 integers.xml:

 <integer
        name="center"
        >17</integer>

在您的 xml 中,执行以下操作:

android:gravity="@integer/center"
于 2013-01-28T21:39:09.857 回答
11

干得好。

<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>
于 2015-12-28T13:09:56.187 回答
2

为了不破坏标准常量并避免在 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>
于 2020-05-13T13:36:54.530 回答