我有一个带有项目的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
答案 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
。