Android 创建自定义选择器
我有3个Android 创建自定义选择器,android,xml,android-layout,textview,drawable,Android,Xml,Android Layout,Textview,Drawable,我有3个文本视图,我想创建一个自定义的选择器可绘制,它: 创建带有圆角的矩形边框(完成) 当用户按下其中一个按钮时,获取选定项 TextViews: <LinearLayout android:id="@+id/info" android:layout_marginTop="68dp" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layou
文本视图
,我想创建一个自定义的选择器
可绘制
,它:
- 创建带有圆角的矩形边框(完成)
- 当用户按下其中一个按钮时,获取选定项
TextView
s:
<LinearLayout android:id="@+id/info" android:layout_marginTop="68dp"
android:layout_width="wrap_content" android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:orientation="horizontal">
<TextView android:id="@+id/tour1"
android:paddingLeft="10dp" android:paddingRight="10dp"
android:paddingTop="8dp" android:paddingBottom="8dp"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/back"
android:gravity="center"
android:text="Tour \n disponibili \n 21"/>
<TextView android:id="@+id/tour2" android:layout_toRightOf="@+id/tour1"
android:paddingLeft="10dp" android:paddingRight="10dp"
android:paddingTop="8dp" android:paddingBottom="8dp"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/back"
android:gravity="center"
android:text="Tour \n prenotabili \n 16"
android:layout_marginLeft="16dp"/>
<TextView android:id="@+id/tour3" android:layout_toRightOf="@+id/tour2"
android:paddingLeft="10dp" android:paddingRight="10dp"
android:paddingTop="8dp" android:paddingBottom="8dp"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/back"
android:gravity="center"
android:text="Tour \n preferiti \n 3"
android:layout_marginLeft="16dp"/>
</LinearLayout>
我想知道如何:
- 要成功应用属性
“?android:attr/selectableItemBackground”
- 或者,正如我刚才尝试的那样,应用一个自定义的李>
TextView
s始终显示选择的第一个项目(没有android:state\u pressed=“true”
属性的项目),当我按下它们时,它们不会切换到具有android:state\u pressed=“true”
属性的项目
我的代码中的缺陷在哪里?尝试交换两项的顺序,我认为这很重要:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle" >
<stroke android:width="5dip"
android:color="#ff0000"/>
<corners android:radius="7dip" />
</shape>
</item>
<item>
<shape android:shape="rectangle" >
<stroke android:width="1dip"
android:color="#4fa5d5"/>
<corners android:radius="7dp"/>
</shape>
</item>
</selector>
编辑
事实上,您可能需要将项目的描述放在单独的文件中:
<?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/pressed"/>
<item android:drawable="@drawable/unpressed"/>
</selector>
尝试交换这两项的顺序,我认为这很重要:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle" >
<stroke android:width="5dip"
android:color="#ff0000"/>
<corners android:radius="7dip" />
</shape>
</item>
<item>
<shape android:shape="rectangle" >
<stroke android:width="1dip"
android:color="#4fa5d5"/>
<corners android:radius="7dp"/>
</shape>
</item>
</selector>
编辑
事实上,您可能需要将项目的描述放在单独的文件中:
<?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/pressed"/>
<item android:drawable="@drawable/unpressed"/>
</selector>
尝试交换这两项的顺序,我认为这很重要:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle" >
<stroke android:width="5dip"
android:color="#ff0000"/>
<corners android:radius="7dip" />
</shape>
</item>
<item>
<shape android:shape="rectangle" >
<stroke android:width="1dip"
android:color="#4fa5d5"/>
<corners android:radius="7dp"/>
</shape>
</item>
</selector>
编辑
事实上,您可能需要将项目的描述放在单独的文件中:
<?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/pressed"/>
<item android:drawable="@drawable/unpressed"/>
</selector>
尝试交换这两项的顺序,我认为这很重要:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle" >
<stroke android:width="5dip"
android:color="#ff0000"/>
<corners android:radius="7dip" />
</shape>
</item>
<item>
<shape android:shape="rectangle" >
<stroke android:width="1dip"
android:color="#4fa5d5"/>
<corners android:radius="7dp"/>
</shape>
</item>
</selector>
编辑
事实上,您可能需要将项目的描述放在单独的文件中:
<?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/pressed"/>
<item android:drawable="@drawable/unpressed"/>
</selector>
应用Roaster的建议后,您必须使用android:clickable=“true”
选择器中项目的顺序很重要,因为选择器将选择与视图状态匹配的第一个(从顶部)项目,因此,“默认”状态(没有定义android:state)应该是最后一个,否则它将始终匹配。应用罗斯特的建议后,您必须使用android:clickable=“true”
选择器中项目的顺序很重要,因为选择器将选择与视图状态匹配的第一个(从顶部)项目,因此,“默认”状态(没有定义android:state)应该是最后一个,否则它将始终匹配。应用罗斯特的建议后,您必须使用android:clickable=“true”
选择器中项目的顺序很重要,因为选择器将选择与视图状态匹配的第一个(从顶部)项目,因此,“默认”状态(没有定义android:state)应该是最后一个,否则它将始终匹配。应用罗斯特的建议后,您必须使用android:clickable=“true”
选择器中项目的顺序很重要,因为选择器将选择与视图状态匹配的第一个(从顶部)项目,因此,“默认”状态(未定义android:state_*)应为最后一个,否则它将始终匹配。尝试使用按钮而不是文本视图。尝试使用按钮而不是文本视图。尝试使用按钮而不是文本视图。尝试使用按钮而不是文本视图。@CrisBenois是的,我想到了另一件事,以前绊倒了我,并将其添加为编辑尝试使用
用于未按下状态。@CrisBenois是的,我想到了另一件事,这件事以前让我绊倒了,然后用
将其添加为一个editTry,用于非按下状态。@CrisBenois是的,我想到了另一件事,以前让我绊倒了,然后用
将其添加为一个editTry,用于非按下状态。@CrisBenois是的,我想到了另一件事,它以前让我绊倒了,我把它添加为一个editTry,在未按下状态下使用
。谢谢,它成功了!!如何应用属性?android:attr/selectableItemBackground
?为视图设置背景:android:background=“?android:attr/selectableItemBackground”
,但是,由于您希望为selectableItemBackground提供自定义绘图,因此需要在主题中覆盖它(并确保加载布局的活动正在使用主题)使用@drawable/back
谢谢,成功了!!我如何应用属性?android:attr/selectableItemBackground
?为视图设置背景:android:background=“?android:attr/selectableItemBackground”
但是,由于您希望为selectableItemBackground提供自定义的可绘制内容,因此需要在主题中覆盖它(并确保加载布局的活动使用该主题)使用@drawable/back
谢谢,它成功了!!我如何应用属性?android:attr/selectableItemBackground
?为您的视图设置背景:android:background=“?android:attr/selectableItemBackground”
但是,由于您希望为selectableItemBackground提供自定义的可绘制内容,因此需要在主题中覆盖它(并确保加载布局的活动使用该主题)使用@drawable/back
谢谢,它成功了!!我如何应用属性?android:attr/selectableItemBackground
?为您的视图设置背景:android:background=“?android:attr/selectableItemBackground”
但是,既然您想