Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建自定义选择器_Android_Xml_Android Layout_Textview_Drawable - Fatal编程技术网

Android 创建自定义选择器

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

我有3个
文本视图
,我想创建一个自定义的
选择器
可绘制
,它:

  • 创建带有圆角的矩形边框(完成)
  • 当用户按下其中一个按钮时,获取选定项
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”
但是,既然您想