0

このような画面のアプリがあります(10インチタブレット):

ここに画像の説明を入力してください

今、私は電話でも動作するようにアプリを修正する必要があります。画面が小さくなるので、「分割ビュー」UIを使用して、左側のリストビューが単独で表示されるように変更し、行を選択すると適切な右側のリストビューが表示されるようにします。

1つのアクティビティが現在両方のリストビューを処理しているため、アプリでこれを処理するにはどうすればよいですか。電話では、リストビューごとに2つ必要になると思います。

どちらを実行するかを検出するにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

MasterDetailedFlowナビゲーションテンプレートを確認する必要があります。Eclipse:NewProject>アクティビティの作成をチェック>「MasterDetailedFlow」ナビガトインタイプを選択します。Androidのデータバインディングをご覧ください

于 2012-12-21T23:47:45.590 に答える
1

さまざまな画面サイズのサポートを参照してください。

通常、これはフラグメントを使用して行われますが、基本的な考え方は、フラグメントを使用するかどうかに関係なく同じです。画面サイズに応じて、アクティビティ用に2つの異なるレイアウトを作成します。

  • 電話のデフォルトレイアウトの単一ペインを次の場所に保存します。res/layout/activity_main.xml
  • デュアルペインタブレットのレイアウトを次の場所に保存しますres/layout/activity_main_twopane.xml

次に、リンクに記載されている画面サイズ修飾子を使用してレイアウトエイリアスファイルを使用し、タブレットレイアウトをいつ使用するかを決定します。たとえば、large画面と最も広い方向に少なくとも600dpの画面(Galaxy S3などの大画面電話を含む)にデュアルペインレイアウトを表示するには、次のようにします。

  • res/values-large/layout.xml含まれています:

    <resources>
        <item name="activity_main" type="layout">@layout/activity_main_twopane</item>
        <bool name="twopane">true</bool>
    </resources>
    
  • res/values-sw600dp/layout.xml含まれています:

    <resources>
        <item name="activity_main" type="layout">@layout/activity_main_twopane</item>
        <bool name="twopane">true</bool>
    </resources>
    

Androidシステムは、アクティビティがレイアウトをロードするときに、適切なレイアウトファイル(またはのいずれres/layout/activity_main.xmlか)のロードを処理します。res/layout/activity_main_twopane.xml

setContentView(R.layout.activity_main);

シングルペインレイアウトに存在しないビューにアクセスしようとすると、それらのビューはnullになることに注意してください(たとえば、2つはListViewもう存在しません)。特定のビューが存在するかどうかを確認することは、使用しているレイアウトを検出する1つの方法です。

XMLファイルでのオプションのブールリソースの使用にも注意してください。これは、「大画面か小画面か」という変数をJavaコードに渡すための便利な方法です。次のように、アクティビティ内のブールリソースにアクセスできます。

boolean isTwoPane = getResources().getBoolean(R.bool.twopane);
于 2012-12-21T23:57:29.667 に答える