列表视图状态未定义

时间:2011-12-10 07:34:15

标签: android xml android-layout

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/settings_unpressed" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
    <item android:drawable="@drawable/settings_unpressed" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>
    <!-- Focused states -->
    <item android:drawable="@drawable/settings_unpressed" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/>
    <item android:drawable="@drawable/settings_unpressed" android:state_pressed="false" android:state_selected="true"/>

    <item android:drawable="@drawable/list_selector_pressed" android:state_pressed="true"/>
        <item android:drawable="@android:color/transparent"/>

</selector>

我有一个圆角的listView,当我尝试滚动我的listView时,边框变得尖锐(如矩形)。当我们滚动listView时,有人能告诉我如何调用状态。我在上面使用代码但没有结果,也许我应该有另一个状态?

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。 设置android:cacheColorHint="#00000000"android:scrollingCache="false"不是。

答案 1 :(得分:0)

以这种方式是不可能的。您需要为顶部项目,中间项目,底部项目以及列表只有1个项目提供不同的可绘制资源。 然后在你的自定义适配器中,你需要改变你的getView:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //...

   if (position == 0 && entry_list.size() == 1) {
            view.setBackgroundResource(R.drawable.selector_rounded_corner);
        } else if (position == 0) {
            view.setBackgroundResource(R.drawable.selector_rounded_corner_top);
        } else if (position == entry_list.size() - 1) {
            view.setBackgroundResource(R.drawable.selector_rounded_corner_bottom);
        } else {
            view.setBackgroundResource(R.drawable.selector_middle);
        }

       //...
   }

选中tutorial,这很简单,也很好。

答案 2 :(得分:0)

您可以将listView的背景设置为圆角的drawable,然后为每个行项留下一些余量。列表视图的整个内容都在一个圆角视图中