列表视图项目在点击时突出显示(不需要)

时间:2014-12-18 23:15:34

标签: android listview android-fragments android-tabhost

我有一个带有项目的TabHost,我希望它们只在点击时突出显示。

之前我曾经拥有它,但我在ListViews上没有改变任何东西,但在TabHost上没有改变(我认为这不应该......)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="at.htl3r.appmosphere.MainActivity$PlaceholderFragment" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

                <ListView
                    android:id="@+id/tab1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </ListView>

                <ListView
                    android:id="@+id/tab2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </ListView>

                <ListView
                    android:id="@+id/tab3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </ListView>

                <ListView
                    android:id="@+id/tab4"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </ListView>
            </FrameLayout>
        </LinearLayout>
    </TabHost>
</RelativeLayout>

我读了一些帖子如何禁用它,但I don't want to disable it complete因为我会处理点击操作

我尝试添加choiceMode="none"selector

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

    <item android:drawable="@color/darkgreen_light" android:state_pressed="true"/>
    <item android:drawable="@android:color/transparent" android:state_activated="true"/>
    <item android:drawable="@android:color/transparent" android:state_checked="true"/>
    <item android:drawable="@android:color/transparent" android:state_selected="true"/>
    <item android:drawable="@android:color/transparent"/>

</selector>

更新

更好的选择:ViewPagerIndicator

1 个答案:

答案 0 :(得分:1)

你应该保留你的列表视图&#39;选择模式到单选(能够检测项目选择/点击),并覆盖列表选择器是透明的(@null适用于旧版本的android而不是16 +):

<style name="YourTheme.ListView" parent="@android:style/Widget.ListView">
    <item name="android:listSelector">@drawable/listSelector</item>
    <item name="android:choiceMode">singleChoice</item>
</style>

<?xml version="1.0" encoding="utf-8"?>

您的listSelector.xml可能如下所示:

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

    <item android:drawable="@color/darkgreen_light" android:state_pressed="true"/> <!-- pressed -->
    <item android:drawable="@color/darkgreen_light" android:state_focused="true"/> <!-- focused -->
    <item android:drawable="@android:color/transparent"/> <!-- default -->

</selector>

<强>更新

如果您不希望任何关于商品点击的视觉反馈,只需将列表视图样式中的@drawable/listSelector更改为@android:color/transparent