创建选择器

时间:2017-06-11 16:50:26

标签: android android-layout android-drawable android-selector

我想在Android Studio中创建一个选择器。我在res.layout文件夹中创建了一个名为“button_hover.xml”的文件。


button_hover.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="wrap_content" android:layout_width="wrap_content">
    <item android:state_focused="true" android:drawable="@drawable/bg1.png"/>
    <item android:state_pressed="true" android:drawable="@drawable/bg2.png" />
    <item android:drawable="@drawable/bg3.png" />
</selector>

bg1.png,bg2.png,bg3.png存在于我的drawable文件夹中,我可以使用Ctrl + Space来调用它们,但是当我运行应用程序时,控制台显示错误:

Error:(5, 58) No resource found that matches the given name (at 'drawable' with value '@drawable/bg1.png').
Error:(6, 58) No resource found that matches the given name (at 'drawable' with value '@drawable/bg2.png').
Error:(7, 29) No resource found that matches the given name (at 'drawable' with value '@drawable/bg3.png').

我该如何解决?

2 个答案:

答案 0 :(得分:0)

请你检查它们是在res / drawable下创建的,看起来它们来自以下文件夹中的任何一个:

Instatiate()

如果您正在使用Android,那么从结构顶部选择Project,您会看到您的绘图在哪个文件夹下,如果您没有使用所有尺寸,它们应该是可绘制的。

答案 1 :(得分:0)

选择器XML

<?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/select_true" />

    <item android:state_focused="true"
        android:drawable="@drawable/select_false" />

    <item android:drawable="@drawable/select_false" />
</selector>

select_true XML

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

<solid
    android:color="#44ffffff"></solid>

<stroke android:color="#ffffff"
    android:width="1.2dp"/>

</shape>

select_false XML

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<solid
    android:color="#00ffffff"></solid>

<stroke android:color="#ffffff"
    android:width="1.3dp"/>

</shape>