在xml文件中保存layout_weight是否可行?

6
我需要更改布局中3个视图的layout_weight,根据屏幕的物理尺寸。这些视图的权重为0-1-0,但在xlarge屏幕上使用时,必须更改为0.2-0.6-0.2。
我尝试将layout_weight保存在不同的dimensions.xml副本中(一个在values / dimensions中,另一个在values-xlarge / dimensions中),但似乎我不能在不设置dp / px或w / e(无法保存像1或0.2这样的“原始”数字)的情况下给出尺寸。
是否可能通过xml以某种方式实现,还是我必须编程才能实现?
4个回答

9

您,先生,是一个救命恩人!赞! - Alex Styl

5
在相应的 values 文件夹中创建一个文件,例如 values, values-large, values-xlarge, ...。添加一个资源文件,其内容类似于这个例子:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <item type="integer" name="layout_weight_xy">7</item>
</resources>

然后调用
android:layout_weight="@integer/layout_weight_xy"

在你的布局文件中。

2

首先,定义您的资源,例如integer.xml,并确保设置正确的类型格式。如果您想将其用于layout_weight,可以设置type="integer" format="float"

<item name="my_weight_value" type="integer" format="float">1.2</item>

然后我们可以在布局中使用它。
 <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="@integer/my_weight_value"
        android:orientation="vertical">
 </LinearLayout>

2
您可以在layout-xlarge文件夹中创建特殊的布局,并在那里提供不同的权重。

我可以这样做,但是只维护一个布局比维护三个(每个屏幕大小都要更改权重)容易得多。 - Alex Styl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接