739
汽車大全
android中設置控件獲得焦點
android中,要使控件獲得焦點,需要先setFocus,再requestFocus。
以Button為例:
btn.setFocusable(true);
btn.setFocusableInTouchMode(true);
btn.requestFocus();
btn.requestFocusFromTouch();
//獲得失去焦點的監聽器 btn.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if (hasFocus) { btn_box.setBackgroundResource(R.drawable.book_green); }else { btn_box.setBackgroundResource(R.drawable.book); } } });
1. 背景色: listView設置背景色android:background="@drawable/bg",拖動或者點擊list空白位置的時候發現ListItem都變成黑色。 因為默認的ListItem背景是透明的,而ListView的背景是固定不變的,所以在滾動條滾動的過程中如果實時地去將當前每個Item的顯示內容跟背景進行混合運算,所以android係統為了優化這個過程用,就使用了一個叫做android:cacheColorHint的屬性,在黑色主題下默認的顏色值是#191919,所以就出現了剛才的畫麵,有一半是黑色的。
如果你隻是換背景的顏色的話,可以直接指定android:cacheColorHint為你所要的顏色;如果你是用圖片做背景的話,那也隻要將android:cacheColorHint指定為透明(#00000000)就可以了,當然為了美化是要犧牲一些效率的。
2. android:fadingEdge="none" 去掉上邊和下邊黑色的陰影
3. android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一個圖片資源lsitview的每一項之間需要設置一個圖片做為間隔
設置Item之間無間隙
android:divider="#00000000" 或者在javaCode中如下定義:listView.setDividerHeight(0);
4. android:listSelector="@color/pink" listView item 選中時的顏色。默認為橙黃底色。
5. android:divider="@drawable/list_driver" 設置分割線的圖片資源,如果則隻要設置為
android:divider="@drawable/@null" 不想顯示分割線
6. android:scrollbars="none" setVerticalScrollBarEnabled(true); 隱藏listView的滾動條
7. android:fadeScrollbars="true" 設置為true就可以實現滾動條的自動隱藏和顯示
8. android:transcriptMode="alwaysScroll" 用ListView或者其它顯示大量Items的控件實時跟蹤或者查看信息,希望最新的條目可以自動滾動到可視範圍內。通過設置的控件transcriptMode屬性可以將Android平台的控件(支持ScrollBar)自動滑動到最底部。
android:fastScrollEnabled="false"
android:fastScrollEnabled = "true" 加快滑動速度
android:drawSelectorOnTop="false"
android:scrollingCache="false" ??????????????
android:drawSelectorOnTop="true" 點擊某一條記錄,顏色會顯示在最上麵,記錄上的文字被遮住,所以點擊文字不放,文字就看不到
android:drawSelectorOnTop="false" 點擊某條記錄不放,顏色會在記錄的後麵,成為背景色,但是記錄內容的文字是可見的
When set to true, the selector will be drawn over the selected item. Otherwise the selector is drawn behind the selected item. The default value is false.
9.在ListView中添加屬性:
android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track" android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
scrollbar_vertical_track,crollbar_vertical_thumb自定義的xml文件,放在Drawable中,track是指長條,thumb是指短條,然後再xml中定義短條和長條的樣式
在項目的開發過程中,需要Listview的Item中包含按鈕的效果。在實際開發過,Item中放置按鈕後,ListView 單行選擇背景顏色變化的效果沒有了。
問題原因
ListView 和 其它能觸發點擊事件的widget無法一起正常工作的原因是加入其它widget後,ListView的itemclick事件將無法觸發,被其它widget的click事件屏蔽。
目前網絡上普遍的解決方式
設置1 在Item的xml模板中設置 根布局 屬性
android:descendantFocusability= "blocksDescendants"
如下:
< RelativeLayout>
android:descendantFocusability= "blocksDescendants"
設置2 在按鈕控件<ImageButton>中設置屬性
android:focusable = "false"
補充:這種設置後,點擊按鈕,整條Item都響應點擊效果,顯示的效果非我們需要的
我們的需要的效果
1 ListView的Item本身可以選擇
2 Item中的按鈕可以隨意點擊,不會幹擾Item
實現的過程
在ListView中用圖片控件,或者文本控件,來代替圖片按鈕和普通按鈕,並在Adapter中設置點擊事件就可以
如例:
//根據數據項,設置點擊文本框的文字,並設置點擊事件 TextView txt_Remember=(TextView)convertView.findViewById(R.id.txt_Remember); txt_Remember.setOnClickListener(new TextView.OnClickListener() { public void onClick(View v){ LibListViewAdapter.this.remove(LibListViewAdapter.this.getItem(1)); } });
最後更新:2017-04-04 07:03:44