Android實(shí)現(xiàn)為L(zhǎng)istView同時(shí)設(shè)置點(diǎn)擊時(shí)的背景和點(diǎn)擊松手之后的背景
本文實(shí)例講述了Android實(shí)現(xiàn)為L(zhǎng)istView同時(shí)設(shè)置點(diǎn)擊時(shí)的背景和點(diǎn)擊松手之后的背景。分享給大家供大家參考。具體分析如下:
這里要達(dá)到的效果是,
(1)點(diǎn)擊ListView的item時(shí)會(huì)有指定的背景,
(2)松手之后,剛才點(diǎn)擊的item也會(huì)有指定的背景
實(shí)現(xiàn)(1)很簡(jiǎn)單:在xml中為L(zhǎng)istView設(shè)置listSelector即可。
android:id="@+id/pop_listview_left"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:divider="@color/popup_left_bg"
android:dividerHeight="1dp"
android:listSelector="@color/popup_right_bg"
android:scrollingCache="false"
/>
實(shí)現(xiàn)(2)也很簡(jiǎn)單,在adapter中動(dòng)態(tài)改變背景:
convertView.setBackgroundResource(R.color.left_selected);
}else{
convertView.setBackgroundResource(R.color.left_normal);
}
并且在該ListView的點(diǎn)擊事件中及時(shí)更新selectedPosition:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//更新背景色
FirstClassAdapter adapter = (FirstClassAdapter) (parent.getAdapter());
adapter.setSelectedPosition(position);
adapter.notifyDataSetChanged();
}
});
可是,問(wèn)題出來(lái)了:設(shè)置了(2)之后,(1)的效果沒(méi)了?。?!
這是因?yàn)椋谠O(shè)置
時(shí),(1)中l(wèi)istSelector中指定的顏色會(huì)被覆蓋。
解決方法有兩種:
(一)
將convertView的一個(gè)純色的背景改為一個(gè)selector,并設(shè)置其在點(diǎn)擊時(shí)的顏色為透明(這樣下面listSelector的顏色就露出來(lái)了)。以下是selector_left_normal.xml和selector_left_selected.xml.
<item android:state_pressed="true"
android:drawable="@android:color/transparent"/>
<item android:state_pressed="false"
android:drawable="@color/popup_left_bg"/>
</selector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@android:color/transparent"/>
<item android:state_pressed="false"
android:drawable="@color/popup_right_bg"/>
</selector>
然后將(2)中的代碼改為:
convertView.setBackgroundResource(R.drawable.selector_left_selected);
}else{
convertView.setBackgroundResource(R.drawable.selector_left_normal);
}
(二)
參照(一),將ListView的listSelector屬性去掉,并將其顏色復(fù)制到上面兩個(gè)selector中替換transparent那個(gè)顏色。
也就是說(shuō),每次點(diǎn)擊ListView的條目之后,設(shè)置背景色時(shí),
(a)如果該條目現(xiàn)在是選中狀態(tài),則直接設(shè)為某一個(gè)顏色
(b)否則,將其顏色設(shè)置為一個(gè)selector,并在selector中分別指定點(diǎn)擊和沒(méi)有點(diǎn)擊時(shí)的顏色。
問(wèn)題圓滿解決。
希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
- android的ListView點(diǎn)擊item使item展開(kāi)的做法的實(shí)現(xiàn)代碼
- Android編程實(shí)現(xiàn)Listview點(diǎn)擊展開(kāi)和隱藏的方法
- Android編程實(shí)現(xiàn)ListView中item部分區(qū)域添加點(diǎn)擊事件功能
- Android開(kāi)發(fā)實(shí)現(xiàn)ListView點(diǎn)擊item改變顏色功能示例
- Android 實(shí)現(xiàn)ListView的點(diǎn)擊變色的實(shí)例
- Android ListView的Item點(diǎn)擊效果的定制
- Android ListView的item背景色設(shè)置和item點(diǎn)擊無(wú)響應(yīng)的解決方法
- Android開(kāi)發(fā)之ListView實(shí)現(xiàn)Item局部刷新
- android ListView內(nèi)數(shù)據(jù)的動(dòng)態(tài)添加與刪除實(shí)例代碼
- android ListView和GridView拖拽移位實(shí)現(xiàn)代碼
- Android開(kāi)發(fā)實(shí)現(xiàn)ListView點(diǎn)擊展開(kāi)收起效果示例
相關(guān)文章
Android webview手動(dòng)校驗(yàn)https證書(shū)(by 星空武哥)
有些時(shí)候由于Android系統(tǒng)的bug或者其他的原因,導(dǎo)致我們的webview不能驗(yàn)證通過(guò)我們的https證書(shū),最明顯的例子就是華為手機(jī)mate7升級(jí)到Android7.0后,手機(jī)有些網(wǎng)站打不開(kāi)了,而更新了webview的補(bǔ)丁后就沒(méi)問(wèn)題了2017-09-09Android 對(duì)話框 Dialog使用實(shí)例講解
對(duì)話框是在當(dāng)前的頁(yè)面之上彈出的小窗口, 用于顯示一些重要的提示信息, 提示用戶的輸入,確認(rèn)信息,或顯示某種狀態(tài).如 : 顯示進(jìn)度條對(duì)話框, 退出提示.接下來(lái)通過(guò)本文給大家介紹android dialog對(duì)話框知識(shí),感興趣的朋友一起看看吧2016-09-09android實(shí)現(xiàn)常駐通知欄遇到的問(wèn)題及解決辦法
這篇文章主要介紹了android實(shí)現(xiàn)常駐通知欄遇到的問(wèn)題及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06基于DownloadManager的簡(jiǎn)單下載器編寫(xiě)小結(jié)
Android自帶的DownloadManager是一個(gè)很好的下載文件的工具。該類在API level 9之后出現(xiàn),它已經(jīng)幫我們處理了下載失敗、重新下載等功能,整個(gè)下載過(guò)程全部交給系統(tǒng)負(fù)責(zé),不需要我們過(guò)多的處理,非常的nice。關(guān)鍵的是用起來(lái)也很簡(jiǎn)單,稍微封裝一下就可以幾句話搞定下載2017-12-12Android TextView中文本點(diǎn)擊文字跳轉(zhuǎn) (代碼簡(jiǎn)單)
用過(guò)微博Android手機(jī)端的朋友的都知道微博正文有時(shí)有一些高亮顯示的文本,如話題、提到的人等等,當(dāng)點(diǎn)擊這些文本時(shí)會(huì)跳到另外一個(gè)頁(yè)面(即另一個(gè)activity),下面就要來(lái)模仿微博的這個(gè)功能2016-01-01android中強(qiáng)制更新app實(shí)例代碼
本篇文章主要介紹了android中強(qiáng)制更新app實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Android編程實(shí)現(xiàn)異步消息處理機(jī)制的幾種方法總結(jié)
這篇文章主要介紹了Android編程實(shí)現(xiàn)異步消息處理機(jī)制的幾種方法,結(jié)合實(shí)例形式詳細(xì)總結(jié)分析了Android異步消息處理機(jī)制的原理、相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2018-08-08Android studio設(shè)置文件頭定制代碼注釋的方法
這篇文章主要介紹了Android studio設(shè)置文件頭定制代碼注釋的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08