我是extends ListActivity
。
ListView使用默认主题中的颜色。如何将自己的颜色状态列表资源设置为ListView?
我在onCreate()
尝试了这个:
getListView().setBackgroundResource(R.drawable.background_listview);
这是background_listview
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ff000000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff000000"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
但我只得到错误
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #4: <item> tag
requires a 'drawable' attribute or child tag defining a drawable.
答案 0 :(得分:2)
您必须创建自己的自定义适配器,该适配器将从ListAdapter扩展,并在重写的getView()方法中为每个列表的项目夸大自定义布局。在此布局中,您应将选择器设置为背景。实际上你的选择器看起来还不错。
UDPATE:
看看这个简单的代码:
<强>活动:强>
public class YourActivity extends Activity {
private CustomAdapter customAdapter;
private ArrayList<ExampleObject> listObjects;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
listView = (ListView) findViewById(R.id.activity_listview);
listObjects = new ArrayList<ExampleObjects>();
customAdapter = new CustomAdapter(this, R.layout.list_item, listObjects);
listView.setAdapter(customAdapter);
}
<强>适配器:强>
public class CustomAdapter extends ArrayAdapter<ExampleObject> {
private LayoutInflater inflater;
public NoteAdapter(Context context, int textViewResourceId, List<ExampleObject> objects) {
super(context, textViewResourceId, objects);
inflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return inflater.inflate(R.layout.list_item, parent, false);
}
}
您的list_item.xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/your_selector">
</RelativeLayout>
我希望,它对你有所帮助。也许我犯了错误,因为我编写的代码没有编译器。
再次更新
根据您的情况,将android:color="#ff000000"
更改为android:drawable="#ff000000"
。这对我有所帮助。
答案 1 :(得分:1)
无需创建自己的Adapter
,但在选择器中替换android:color
android:drawable
,并确保使用正确的方法进行设置。
所以不要将选择器设置为ListView
的背景,而是按如下方式提供它,以便资源处理ListView
中的项目:
getListView().setSelector(R.drawable.background_listview);