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

}

};

如果不增加红色代码,则看不到具体的文字改变效果!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章