1

我想在 xml 中有一个解决方案或一个关键字来搜索什么来解决我的问题:

我有多个屏幕。layout每个屏幕在文件夹中都有自己的 xml 。例如代码的一部分:

   <RelativeLayout
        android:id="@+id/headerLayout"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:background="@drawable/header" >

        <Button
            android:id="@+id/btBack"
            android:layout_width="55dp"
            android:layout_height="33dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dip"
            android:layout_marginTop="10dip"
            android:background="@drawable/bt_back"
             />

    </RelativeLayout>

现在,我想在 "@drawable/header"旋转时更改值运行时,最好配置和 Android 在 Java 代码中更改不是我。同样的事情也可以用 来完成
"@drawable/bt_back",它是bt_back.xml文件drawable夹中的一个文件,并且有一个选择器。他的内容在这里:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- selected state -->
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="true" android:state_selected="false"/>
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="false" android:state_selected="true"/>
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="true" android:state_selected="true"/>
    <!-- unselected state (default) -->
    <item android:drawable="@drawable/bt_back_normal"/>

</selector>

现在在我想要drawable-hdpi,drawable-ldpi的文件夹中,我只需要放置这2个文件,android系统会根据用户设备dpi自动处理按下和正常状态的图像更改。

对于从纵向和横向旋转的标题,我想拥有同样的东西。例如,它应该将 header_port.png 替换为 header-land.png。

怎么可能?有任何想法吗?

我不想为景观使用不同的 .xml 布局,也不想在 Java 代码中挖掘。也许在不同的文件夹中,这里描述的标题资源?港口和陆地?

4

2 回答 2

5

您可以创建一个 drawable-land-hdpi 目录。将您的横向版本放在合格的文件夹中,android 应该会自动为您加载它们。

于 2012-10-08T17:14:10.467 回答
2

要详细说明@toadzky 的答案,您可以为在Android 开发人员页面上找到的任何限定符创建一个不同的可绘制目录,并在每个中放置具有相同名称的图像,android 会自动知道要使用哪个。对于 layout(或 layout-land 等)文件夹中的布局、值 xml 文件(例如,字符串资源——对本地化有用——或主题)、值文件夹中的布局或您通常使用的任何其他内容,情况也是如此在 res 文件夹中找到。

同样重要的是要注意,如果我没记错的话,它的优先级工作方式(关于它为资源选择的目录)是“排除所有不兼容目录后的第一次匹配”。

因此,如果您只有 drawable-hdpi 和 drawable,并且您有一个 mdpi 设备,它将消除所有符合 hdpi 的目录,并从剩余的目录中进行选择(因此您最终会得到 drawable 文件夹中的版本)。在链接页面上的“Android如何找到最佳匹配资源”下可以找到进一步的解释。

于 2012-10-08T17:27:39.270 回答