Android 當listview某項被選中時,改變字型的顏色,採用XML來配置
最近在做android的檔案管理器功能,將讀取到的檔名依次存放到listview中進行顯示時,如何表示使用者選中了某一個檔案呢,即當listview某項被選中時,改變字型的顏色。先上效果圖:
具體的效果如上圖所示:
要實現上述功能,可以採用XML配置的方法來實現:
首先在我們的item_list.xml檔案中增加下面一行的程式碼:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:minHeight="55dp"
android:textColor="@drawable/item_color"
android:textSize="25sp" />
</LinearLayout>
在drawable資料夾下建立的item_color.xml檔案內容如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 沒有焦點時字型顏色 -->
<item android:state_selected="false" android:color="#FFFFFF"/>
<!-- 選中時的字型顏色 -->
<item android:state_selected="true" android:color="#ff0000"/>
<!-- 非觸控模式下獲得焦點並單擊時的字型顏色 -->
<item android:state_focused="true" android:state_pressed="true" android:color="#FFFF00"/>
</selector>
完成 上述兩個xml檔案之後,需要在listview的OnItemClickListener中設定如紅色程式碼所示:
OnItemClickListener FileSelectListener = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
if(FilesTemp[arg2].isFile()){
//如果是檔案
//fileList.requestFocusFromTouch();
arg1.setPressed(true);
arg1.setSelected(true);
selectFilePath = FilesTemp[arg2].getAbsolutePath();
}else{
//如果是資料夾
temp_path = FilesTemp[arg2].getAbsolutePath();
FilesTemp = new File(temp_path).listFiles();
UpdateFileList();
}
}
};
如果不增加紅色程式碼,則看不到具體的文字改變效果!