標籤:drawable find vat sele trie drive err parent bundle
***1.ListView控制項常用屬性
choiceMode:設定ListView的選擇行為
divider:設定清單項目的分隔條的顏色
dividerHeight;設定分隔條高度
entries:指定一個數組資源,android將根據該資源產生listview,如android:entries="@array/xxx",資源可以到values檔案夾中的string.xml中添加
footerDividersEnabled:如果設定為false將不會在footerView之前設定分隔條
headerDividersEnabled:如果設定為false將不會在headerView之後設定分隔條
***2.常見問題及解決方案
問題1:listview在拖動的時候背景圖片消失變成黑色背景。等到拖動完畢我們自己的背景圖片才顯示出來。
解決辦法:
xml中: android:scrollingCache="false" 或者 android:cacheColorHint="#00000000"
代碼中: setScrollingCacheEnabled(false) 或者 setCacheColorHint(0) 或者setCacheColorHint(Color.TRANSPARENT);
問題2:listview的上邊和下邊有黑色的陰影。
解決辦法:
xml中: android:fadingEdge="none"
代碼中:setFadingEdgeLength(0);
問題3:lsitview的每一項之間需要設定一個圖片做為間隔。
解決辦法:
xml中 :android:divider="@drawable/list_driver
java中:Drawable dr = this.getResources().getDrawable(R.colo.listviewdividerClour);
ListView.setDivider(dr);
問題4:預設會顯示選中的item為橙黃底色,有時候我們需要去掉這種效果:
解決辦法:
xml中:listSelector="@android:color/transparent
衍生:ListView選中時預設是黃色,很多時候會和我們軟體的配色不符合,那麼需要修改預設的ListView配色,
java中:
Drawable drawable=getResources().getDrawable(R.drawable.touch_feedback);
ListView.setSelector(drawable);
xml中:
listSelector="@android:color/blue
同理運用到 GridView中
***3.設定ListView控制項的點擊事件:
public class MainActivity extends Activity { private ArrayAdapter<String> adapter; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.listview); //1.準備資料來源(可以直接在這裡定義數組,也可在strings.xml中定義資料來源,然後在這裡擷取) final String[] citys = getResources().getStringArray(R.array.citys); //2.將資料來源的資料載入到適配器中 adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,citys); //3.將適配器中的資料載入到控制項中 lv.setAdapter(adapter); //為ListView控制項的每個Item設定監聽事件 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { /*擷取Item中資料的四種方式*/ String s1 = citys[position];//從資料來源中擷取 String s2 = adapter.getItem(position);//從適配器中擷取 String s3 = parent.getItemAtPosition(position).toString();//從parent中擷取 String s4 = lv.getItemAtPosition(position).toString();//從ListView控制項中擷取 Toast.makeText(MainActivity.this, "s1="+s1+",s2="+s2+",s3="+s3+",s4="+s4, Toast.LENGTH_SHORT).show(); } }); //這是為ListView控制項中的Item設定長按事件 lv.setOnItemLongClickListener(new OnItemLongClickListener() { //這是長按時的回呼函數 //若ListView既綁定監聽事件也綁定了長按事件,此時傳回值為false時表示對事件不處理(對點擊和長按事件都會觸發),若為true表示對事件處理(只對長按事件觸發) @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { return false; } }); }}
ListView常用屬性及設定點擊事件