Android:将背景颜色状态列表设置为列出活动

时间:2013-01-02 18:52:17

标签: android colors android-listview

我是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.

2 个答案:

答案 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);