3

我有这样的自定义列表选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:state_pressed="true"
        android:drawable="@drawable/bg_list_hover"></item>
    <item 
        android:state_focused="true"
        android:drawable="@drawable/bg_list"></item>
</selector>

和我的列表视图:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bg_dasar" >
    <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="StoreCategory" 
                android:textSize="15sp"
                android:paddingLeft="10dip"
                android:paddingTop="10dip"
                android:paddingRight="10dip"
                android:textColor="@color/textcolor"/>

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dip"
        android:listSelector="@drawable/listselector">
    </ListView>

我的问题是,当我不点击列表视图时,列表视图项目不使用焦点状态背景(@drawable/bg_list)...

任何人都可以帮助我吗???

4

4 回答 4

5

对于那些仍然需要它的人:关键是将 listSelector 设置为列表项的背景!

<?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:background="#819FF7"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/mainList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cacheColorHint="#819FF7"
        />

 </LinearLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lineItem"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:background="@drawable/list_selector">

     <ImageView android:id="@+id/imageView"
        android:layout_width="96dp"
        android:layout_height="64dp"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="10dp" 
        android:layout_marginTop="10dp" 
        android:layout_marginBottom="10dp" />

    <TextView
        android:id="@+id/textView"
        android:layout_toRightOf="@+id/imageView"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip" 
        android:layout_centerVertical="true"
        android:textSize="18sp"
        android:textColor="#ff000000" 
        android:layout_width="wrap_content"
        />
    <Button 
        android:id="@+id/button" 
        android:gravity="center"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginRight="10dp" 
        android:layout_alignParentRight="true"
        android:focusable="false" 
        android:text="Delete" />

</RelativeLayout>
于 2012-10-31T16:37:07.227 回答
3

通过阅读一些参考资料,我已经解决了我的问题。我的列表选择器应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/bg_list_hover" />
 <item 
     android:drawable="@drawable/bg_list" />
</selector>

我的列表视图布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bg_dasar" >
    <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="StoreCategory" 
                android:textSize="15sp"
                android:paddingLeft="10dip"
                android:paddingTop="10dip"
                android:paddingRight="10dip"
                android:textColor="@color/textcolor"/>

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dip"
        **android:listSelector="@android:color/transparent"**>
    </ListView>

</LinearLayout>

我还将我的列表选择器添加到我的列表项背景中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="55dip"
    android:orientation="horizontal" 
    android:padding="15dip"
    android:gravity="center_vertical"
    **android:background="@drawable/listselector"**>

    <ImageView
        android:id="@+id/imageViewlogo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dip" />

    <TextView
        android:id="@+id/textViewcategory"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textColor="@color/textcolor" 
        android:textSize="15sp"/>

</LinearLayout>

感谢 Jay 和 danwilkie 回答我的问题.. :))

于 2012-10-25T15:40:04.853 回答
0

在 xml 中设置 android:focusable="true" 后,您是否尝试过在代码中的 listView 上调用“requestFocus()”?从查看文档:

“调用此方法以尝试将焦点赋予特定视图或其后代之一。如果视图不可聚焦(isFocusable() 返回 false),或者如果它可聚焦但无法聚焦,则视图实际上不会获得焦点设备处于触摸模式时的触摸模式 (isFocusableInTouchMode())。另请参见 focusSearch(int),这就是您调用的方式,表示您有焦点,并且您希望您的父母寻找下一个。这相当于使用参数 FOCUS_DOWN 和 null 调用 requestFocus(int, Rect)。"

于 2012-10-25T14:02:16.863 回答
0

看起来您的选择器 xml 目前正在说当您单击一个项目时使用 bg_list_hover ,而当您专注于一个项目时使用 bg_list (例如,使用轨迹球)。

如果您想在项目既未单击也未聚焦时在默认情况下使用自定义可绘制对象,则需要为此添加一个条目:

我会使用这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:state_pressed="true"
        android:drawable="@drawable/bg_list_pressed"></item>
    <item 
        android:state_focused="true"
        android:drawable="@drawable/bg_list_focused"></item>
    <item 
        android:drawable="@drawable/bg_list"></item>
</selector>
于 2012-10-25T14:04:23.550 回答