是否有可能在android中定义XML中的常量随配置而变化

And*_*zie 24 xml layout android constants

我有兴趣在Android中更改大小的XML布局,具体取决于横向或纵向查看(以及稍后可能的其他配置).

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:background="@drawable/stream_bg_1px_wide"
android:layout_height="150dip" >
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我只想根据风景或肖像改变150dip大小,而不是改变其他任何东西.

我正在使用layout和layout-land,我知道我可以在每个文件夹中重复布局,但这使得维护它的变化有点痛苦.当我根据屏幕密度和大小引入更多变体时,它会变得更糟.

所以,我想知道是否可以在XML文件中定义一个值(常量),并从我的布局中引用它,类似于如何定义颜色

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="shopper_background"> #FFFFFF</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

...... ......

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <value name="footer_size" >150</value>
</resources>
Run Code Online (Sandbox Code Playgroud)

然后我可以在每个配置中复制具有不同值的文件.

谢谢你的帮助

Rom*_*Guy 39

是的,你可以这样做,我们在Android本身的所有地方都这样做:)只需在res/values /,res/values-land /等中定义你的常量.对于尺寸,使用标签并使用@ dimen /引用它们布局中的my_value.


viv*_*oup 24

是.维度是资源文件中的已接受项目.所以创建例如res/values/dimension.xml并放入

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="footer_size" >150dp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)