最近在做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();
}
}
};
如果不增加红色代码,则看不到具体的文字改变效果!