androidbuttonselect器

这是一个buttonselect器,当正常时显示为红色,按下时显示为灰色。

我想问一下代码如何进一步直接修改,这样当按压文本大小和颜色也可以改变? 非常感谢!

<item android:state_pressed="true" > <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="2dp" android:color="@color/black" /> <solid android:color="@color/grey"/> <padding android:left="5dp" android:top="2dp" android:right="5dp" android:bottom="2dp" /> <corners android:radius="5dp" /> </shape> </item> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="2dp" android:color="@color/black" /> <solid android:color="#FF6699"/> <padding android:left="5dp" android:top="2dp" android:right="5dp" android:bottom="2dp" /> <corners android:radius="5dp" /> </shape> </item> 

您只需要在布局文件中设置button selector

 <Button android:id="@+id/button1" android:background="@drawable/selector_xml_name" android:layout_width="200dp" android:layout_height="126dp" android:text="Hello" /> 

并做了。

编辑

以下是drawable目录中的button_effect.xml文件

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/numpad_button_bg_normal"></item> </selector> 

在这里,你可以看到有3个drawable,你只需要把这个button_effect样式放到你的button ,就像我上面写的那样。 你只需要用button_effectreplaceselector_xml_name

您无法通过可绘制的状态列表实现文本大小更改。 要更改文字颜色和文字大小,请执行以下操作

文本颜色

要更改文字颜色,您可以创build颜色状态列表资源 。 它将是一个独立的资源位于res/color/目录。 在布局xml中,您必须将其设置为android:textColor属性的值。 颜色select器将包含如下内容:

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

字体大小

你不能简单地用资源来改变文本的大小。 没有“维度select器”。 你必须在代码中做到这一点。 而且没有简单的解决scheme。

可能最简单的解决scheme可能是利用View.onTouchListener()并相应地处理向上和向下的事件。 使用这样的东西:

 view.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // change text size to the "pressed value" return true; case MotionEvent.ACTION_UP: // change text size to the "normal value" return true; default: return false; } } }); 

不同的解决scheme可能是扩展视图并覆盖setPressed(Boolean)方法。 当按压状态发生变化时,内部调用该方法。 然后在方法调用中相应地更改文本的大小(不要忘记调用super)。

在drawable文件夹中创buildcustom_selector.xml

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

在可绘制文件夹中创buildselected.xml形状

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp"> <solid android:color="@color/selected"/> <padding /> <stroke android:color="#000" android:width="1dp"/> <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/> </shape> 

在可绘制文件夹中创buildunselected.xml形状

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp"> <solid android:color="@color/unselected"/> <padding /> <stroke android:color="#000" android:width="1dp"/> <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/> </shape> 

在值文件夹的color.xml中为选中/未选状态添加以下颜色

 <color name="selected">#a8cf45</color> <color name="unselected">#ff8cae3b</color> 

你可以从这里检查完整的解决scheme

实现select器的最佳方式是使用xml,而不是使用编程方式,因为使用xml更容易实现。

  <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_bg_selected" android:state_selected="true"></item> <item android:drawable="@drawable/button_bg_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/button_bg_normal"></item> </selector> 

欲了解更多信息,我使用此链接http://www.blazin.in/2016/03/how-to-use-selectors-for-botton.html

你可以使用这个代码:

 <Button android:id="@+id/img_sublist_carat" android:layout_width="70dp" android:layout_height="68dp" android:layout_centerVertical="true" android:layout_marginLeft="625dp" android:contentDescription="" android:background="@drawable/img_sublist_carat_selector" android:visibility="visible" /> 

(select器文件)img_sublist_carat_selector.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="true" android:drawable="@drawable/img_sublist_carat_highlight" /> <item android:state_pressed="true" android:drawable="@drawable/img_sublist_carat_highlight" /> <item android:drawable="@drawable/img_sublist_carat_normal" /> </selector>