1. 程式人生 > >Android 當listview某項被選中時,改變字型的顏色,採用XML來配置

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();
}

}

};

如果不增加紅色程式碼,則看不到具體的文字改變效果!