7

私は ListView を持っていますが、それは電話でうまく機能します。現在、左に ListView、右に詳細を表示して、タブレット UI を作成しています。

アイテムに触れると、押している間、青く点滅します。Nexus 7 の Gmail アプリのように、別のアイテムが選択されるまでその青色を維持したいと考えています。

それを達成するための最もクリーンな方法は何ですか?背景を手動で設定するのは避けたいと思います。要素を「アクティブ」なものとしてマークし、それに応じてテーマを設定する方法があると思います。

4

3 に答える 3

18

それを達成するための最もクリーンな方法は何ですか?

あなたが探しているものは、「活性化された」状態として知られています。これを機能させるには:

ステップ #1: にres/values-v11/、 を実装するスタイル リソースを用意しますactivated。たとえば、AppThemeそこで宣言が定義されている新しいプロジェクトの場合は、次のようにします。

<resources>

    <style name="AppTheme" parent="android:Theme.Holo.Light"></style>

    <style name="activated" parent="AppTheme">
        <item name="android:background">?android:attr/activatedBackgroundIndicator</item>
    </style>

</resources>

ステップ #2: スタブ スタイル リソースと同様に、古いデバイスに対して同じスタイルを定義してres/values/、それへの参照が引き続き機能するようにします。

<resources>

    <style name="AppTheme" parent="android:Theme.Light"/>

    <style name="activated" parent="AppTheme"/>

</resources>

ステップ #3: の行のレイアウト XML リソースで、ルート要素の属性のリストにListView追加します。style="@style/activated"

ステップ #4:ListViewを次の行のように単一選択リストに設定しますListFragment

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

これは、このサンプル プロジェクトこのサンプル プロジェクト、およびこのサンプル プロジェクトで実際に確認できます。最初の 2 つのサンプルの背景については、SO の質問「Gmail の 3 フラグメント アニメーション シナリオの完全な作業サンプル? 」を参照してください。

于 2012-09-12T11:25:36.600 に答える
4

使用する

android.R.layout.simple_list_item_activated_1

それ以外の

R.layout.simple_list_item_checkable_1.

誰かがいつかチェックするためだけに。

于 2012-11-27T04:18:46.457 に答える
2

activatedBackgroundIndicator何日も検索して髪を引っ張った後、ActionBarSherlock スタイリング システムでも利用できることがわかりました。下位互換性のあるアプリを開発する開発者のほとんどは、ActionBarSherlock を使用しているため、ほとんどの場合、ActionBarSherlock を使用することをお勧めします。android:background="?android:attr/activatedBackgroundIndicator"したがって、11 より前のバージョンの Android でエラーが発生する which を使用する代わりに、以下を使用してください。android:background="?activatedBackgroundIndicator"

行レイアウトの xml コードの例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
   //note the activatedBackgroundIndicator
android:background="?activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingBottom="2dip"
android:paddingTop="2dip" >

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
    android:textSize="15sp" />

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:paddingRight="5dip"
    android:textSize="20dip" />
  </LinearLayout>
于 2013-03-15T20:46:36.593 に答える