我希望获得类似于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"
现在我的按钮没有背景,但我不知道为什么
答案 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">