我有一個ListView,它在手機上效果很好。現在我正在製作平板電腦用戶界面,左邊是ListView,右邊是詳細信息。Android:ListView選擇後保持藍色背景
當我觸摸一個項目時,只要按下它就會閃爍藍色。我想保持藍色,直到選中另一個項目,就像Nexus 7上的Gmail應用程序一樣。
實現該目標的最簡潔方法是什麼?我寧願避免手動設置背景,我認爲有一種方法可以將元素標記爲「活動」元素,然後相應地設置主題。
我有一個ListView,它在手機上效果很好。現在我正在製作平板電腦用戶界面,左邊是ListView,右邊是詳細信息。Android:ListView選擇後保持藍色背景
當我觸摸一個項目時,只要按下它就會閃爍藍色。我想保持藍色,直到選中另一個項目,就像Nexus 7上的Gmail應用程序一樣。
實現該目標的最簡潔方法是什麼?我寧願避免手動設置背景,我認爲有一種方法可以將元素標記爲「活動」元素,然後相應地設置主題。
什麼是最簡單的方法來實現這一目標?
你在找什麼是被稱爲「激活」狀態。要做到這一點:
步驟#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步:在在ListView
行佈局XML資源,增加style="@style/activated"
根元素
聖屬性列表EP#4:設置ListView
是單選項列表,如在ListFragment
以下行:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
可以在this sample project,this sample project和this sample project看到這個動作。對於那些第一次兩個樣本更多的背景,請參閱本SO問題:Complete Working Sample of the Gmail Three-Fragment Animation Scenario?
它工作得很好,它確實比以編程方式更改背景好得多。非常感謝你! – erwan
使用的
android.R.layout.simple_list_item_activated_1
代替
R.layout.simple_list_item_checkable_1
。
只爲有人檢查某一天。
經過幾天的搜索和拉我的頭髮我剛剛發現,activatedBackgroundIndicator
也可在ActionBarSherlock造型系統。大多數開發向後兼容應用程序的開發人員使用ActionBarSherlock,因此在大多數情況下使用ActionBarSherlock是一個不錯的選擇。因此,而不是使用android:background="?android:attr/activatedBackgroundIndicator"
將前11給android的版本錯誤,只需使用: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>
'所以,而不是使用android:background =「?activatedBackgroundIndicator」,它會在11之前的Android版本中發生錯誤,只需使用:android:background =「?activatedBackgroundIndicator」'什麼?你能解釋一下嗎? – kuchi
謝謝4點指出。糾正了答案。 –
你可以看到這個鏈接可能會有所幫助:HTTP:/ /stackoverflow.com/questions/5682053/listview-item-wont-stay-selected –
你可以設置列表視圖項目的點擊ListView項目的視圖的背景顏色。 –