欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

一.ListView的事件:

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)三明,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

1.setOnItemClickListener()點擊事件

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

     listview.setOnItemClickListener(new OnItemClickListener() {
            @Override            public void onItemClick(AdapterView<?> parent, View view,                    int position, long id) {
                 Toast.makeText(ArrayAdapterActivity.this, "你點擊了第"+(position+1)+"項", Toast.LENGTH_SHORT).show();
            }
        });

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

 

2.setOnItemLongClickListener()長按事件,設(shè)置“長按”listview某一項的監(jiān)聽事件。

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

    listview.setOnItemLongClickListener( OnItemLongClickListener() {  
            @Override  
              onItemLongClick(AdapterView<?> parent, View view,  
                     position,  id) {
          Toast.makeText(ArrayAdapterActivity., "你了第"+(position+1)+"項", Toast.LENGTH_SHORT).show();
           ; 
       } 
    });

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

 二.ListView由于item項中包含某些可以搶焦點的控件導(dǎo)致無法獲取焦點問題

(注意:ListView的項根元素layout的寬要設(shè)置成android:layout_width="fill_parent",否則可能會因為項內(nèi)容太短,導(dǎo)致點擊時獲取不到焦點)

1>.如果你自定義ListView的項中包含能獲得焦點的子控件(RadioGroup、Button、CheckBox、DatePicker、ImageButton、ScrollView、SeekBar、EditText、ToggleButton、RatingBar等)的話,默認焦點會被交給這些子控件,而ListView的項能被選中的基礎(chǔ)是它能獲取焦點,所以項中的這些子控件的焦點必須為false,這樣ListView的項才能獲取onItemLongClick事件與onItemClick事件

解決辦法(以Button為例):

在布局文件中,在項的layout布局文件根元素中加入android:descendantFocusability="blocksDescendants"如:

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants" >

    <ImageView
        android:id="@+id/header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/header"
        android:layout_toRightOf="@id/header" />

    <TextView
        android:id="@+id/age"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/name"
        android:layout_below="@id/name" />

    <Button
        android:id="@+id/delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="@string/deleteselect" />
</RelativeLayout>

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

如果layout是程序動態(tài)生成的,則調(diào)用

layout.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

2>.如果你自定義ListView的項中包含能獲得焦點的子控件GridView的話,默認焦點會被交給這些子控件,而ListView的項能被選中的基礎(chǔ)是它能獲取焦點,所以項中的這些子控件的焦點必須為false,這樣ListView的項才能獲取onItemLongClick事件與onItemClick事件

解決辦法(以Button為例): 

1.在布局文件中,在項的layout布局文件根元素中加入

android:descendantFocusability="blocksDescendants"

2.程序中給GridView進行如下設(shè)置

gridView.setClickable(false);
gridView.setPressed(false);
gridView.setEnabled(false);

 三.ListView的UI顯示中常見問題及解決辦法

1>如果需求是listview點擊時,item無背景變色效果

步驟:

1.drawable文件夾中新建timer_list_selector.xml內(nèi)容如下

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_selected="true" android:drawable="@color/transparent"/></selector>

2.values文件夾中新建colors.xml內(nèi)容如下

<?xml version="1.0" encoding="utf-8"?><resources>
    <color name="transparent">#50000000</color></resources>

3.布局文件中給listview加入如下屬性

android:listSelector="@drawable/timer_list_selector"

2>listview設(shè)置分割線Divider樣式,布局文件給listview加入如下屬性(已分隔符為顏色為例)

android:divider屬性用來設(shè)置分割線顏色(或圖片),當(dāng)設(shè)置為#00000000時表示item之間無間隙;

通過android:dividerHeight屬性設(shè)置分割線高度

    android:divider="#ff999999"
       android:dividerHeight="1sp"

3>UI展現(xiàn)時常見問題

問題1:listview設(shè)置背景,拖動listview時顯示黑色,只有拖動完才會顯示我們設(shè)置的背景顏色或圖片
  產(chǎn)生原因:listview的背景是固定不變的,默認Listview的每項的背景是透明的,拖動滾動條的過程中需要實時將每個項的顯示內(nèi)容跟背景進行混合運算,android系統(tǒng)為了優(yōu)化這個過程,使用了android:cacheColorHint屬性,在黑色背景下默認顏色為#191919,所以出現(xiàn)了上面的黑色顯示問題
  解決辦法:(根據(jù)需求而定)

1.如果只換背景顏色:將android:cacheColorHint設(shè)置成和背景顏色一樣或android:scrollingCache="false"如下      

      android:cacheColorHint="#ff00ff00"
      android:background="#ff00ff00"

        或

      android:scrollingCache="false"
          android:background="#ff00ff00"

2.如果用圖片做背景:將android:cacheColorHint設(shè)為#00000000變?yōu)橥该骰騛ndroid:scrollingCache="false"即可如下
           

      android:cacheColorHint="#00000000"
          android:background="@drawable/ic_launcher"

        或           

      android:scrollingCache="false"
          android:background="@drawable/ic_launcher"

問題2:listview上面或下面有黑色陰影

解決辦法:布局文件中給listview加入android:fadingEdge="none" 
  UI總結(jié):

綜上問題得到最終的布局為(帶分割線+背景色)
     

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

<ListView        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="180dip"
        android:divider="#ff999999"
        android:dividerHeight="1sp"
        android:fadingEdge="none" 
        android:scrollingCache="false"
        android:background="#ff00ff00"
        />

ListView+Adapter適配器的使用與Listview常見的UI顯示問題

 

 

 

 

本文標(biāo)題:ListView+Adapter適配器的使用與Listview常見的UI顯示問題
網(wǎng)站網(wǎng)址:http://www.chinadenli.net/article30/jdhsso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版微信小程序做網(wǎng)站標(biāo)簽優(yōu)化網(wǎng)頁設(shè)計公司商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)