默认按钮的方法

时间:2013-12-23 14:12:41

标签: java android

我希望获得类似于android中默认的onclick按钮效果,但使用自己的颜色

默认按钮为白色或浅灰色 当我触摸按钮颜色改变一会儿(橙色) 释放时,按钮的颜色恢复为原始颜色(白色/浅灰色)

哪种方法正在使用此效果?

我使用onTouchListener()来设置触摸的按钮颜色 和OnClickListener()设置原始颜色

但是当我触摸任何按钮时滚动组按钮(内部ScrollView)时,颜色发生了变化,但是当释放按钮颜色不变回时。我应该使用哪种方法?我该如何解决这个问题?

/////////////////// 我在值中创建了颜色并定义了2种颜色

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#ffffff</color>
    <color name="blue">#004080</color>
</resources>

我在此文件夹中创建了新的文件夹颜色和button_state.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_focused="true"
        android:state_pressed="false"
        android:drawable="@color/blue" />
    <item android:state_focused="true"
        android:state_pressed="true"
        android:drawable="@color/white" />
</selector>

到我的按钮我在xml文件中分配代码

android:background="@color/button_states"

现在我的按钮没有背景,但我不知道为什么

3 个答案:

答案 0 :(得分:2)

根据状态创建定义按钮状态和按钮颜色的xml文件,例如项目中res / color文件夹中的button_states.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="@color/pressed_button_color"/>
    <item android:state_selected="true"
          android:drawable="@color/selected_button_color"/>
    <item android:drawable="@color/default_button_color"/>
</selector>

在values / colors.xml中定义这些颜色

并在Button元素的布局xml文件中使用它:

android:background="@color/button_states"

答案 1 :(得分:0)

在您的按钮的xml中,将其背景设置为以下

android:background="?android:attr/selectableItemBackground"

这将自动处理颜色更改为android

中的默认更改

如果您想拥有自己的颜色,则需要自定义选择器并将其设置为背景。以下内容应该有效:

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

<item android:state_pressed="true" android:drawable="@drawable/list_selector_pressed" />
<item android:state_focused="true" android:drawable="@drawable/list_selector_focused" />
<item android:drawable="@color/selector_background" />

</selector>

你的抽签将是这样的:

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

<solid android:color="@color/selector_background_pressed"/>

</shape>

不是100%肯定,但您可能只能在选择器中直接使用@ color / my_colour而不是引用drawable。但这种方式肯定会起作用

答案 2 :(得分:0)

我建议您在线tool使用此功能。您只需要选择所需的颜色集,并在下载资源后分别放入项目资源文件夹,然后将主题应用于您在Manifest文件中使用您在此在线工具上设置的名称的应用程序(默认情况下为“主题名称”AppTheme )

<application android:debuggable="true" android:label="@string/app_name"android:theme="@style/AppTheme">