1

問題を解決するために何を検索するかについて、xmlまたはキーワードで解決策を知りたいです。

複数の画面があります。各画面には、フォルダー内に独自のxmlがありlayoutます。たとえば、コードの一部:

   <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など)フォルダー内のレイアウト、value xmlファイル(たとえば、文字列リソース-ローカリゼーションに役立つ-またはテーマ)、valuesフォルダー内のその他の通常のものにも当てはまります。 resフォルダーで見つけます。

また、優先順位が機能する方法(リソース用に選択するディレクトリに関して)は、正しく思い出せば、「互換性のないすべてのディレクトリを除外した後の最初の一致」であることに注意することも重要です。

したがって、drawable-hdpiとdrawableのみがあり、mdpiデバイスがある場合は、hdpiで修飾されたすべてのディレクトリが削除され、残りのディレクトリから選択されます(したがって、drawableフォルダーのバージョンになります)。詳細な説明は、リンクされたページの「Androidが最適なリソースを見つける方法」にあります。

于 2012-10-08T17:27:39.270 に答える