Gan*_*h K 8 android android-theme android-button android-styles
我想在我的应用程序中为Button提供以下设置.您可以将其视为按钮的一些主题更改.
样式圆形或正常
颜色红色或黄色或蓝色或任何颜色代码
我知道在XML中定义Shape,我可以实现Rounded Corners.有了setBackgroundColor,我可以将任何颜色设置为背景.
问题
根据我称之为的顺序setBackgroundColor,两者都 setBackground相互重叠.所以我无法在同一个按钮上实现这两种效果.我怎样才能同时实现这两种效果.如何从单个Button类中获得多个按钮.提前致谢.

好吧,我做到了 GradientDrawable
int color = Color.rgb(255,0,0); //red for example
int radius = 5; //radius will be 5px
int strokeWidth = 2;
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setColor(color);
gradientDrawable.setCornerRadius(radius);
gradientDrawable.setStroke(strokeWidth, color);
button.setBackground(gradientDrawable);
Run Code Online (Sandbox Code Playgroud)
您可以在可绘制资源中设置按钮的形状和背景颜色,并将其指定为android:backgroundXML或setBackgroundDrawable()代码.
下面是这样一个按钮的示例:
/res/drawable/button.xml
此文件用于设置圆角形状和背景颜色
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="16dp" />
<stroke
android:width="3dp"
android:color="#ff0000" />
</shape>
</item>
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="16dp" />
<stroke
android:width="3dp"
android:color="#ff0000" />
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#ff0000" />
<corners android:radius="16dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="16dp" />
<stroke
android:width="3dp"
android:color="#0000ff" />
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
/res/color/button.xml
(此文件用于设置文本颜色)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#0000ff" />
<item android:state_focused="true" android:color="#0000ff" />
<item android:state_selected="true" android:color="#0000ff" />
<item android:color="#000000" />
</selector>
Run Code Online (Sandbox Code Playgroud)
然后,您可以将布局中的按钮初始化为:
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/button"
android:background="@drawable/button"/>
Run Code Online (Sandbox Code Playgroud)
按钮将如下所示(默认情况下,从上到下按下状态):

| 归档时间: |
|
| 查看次数: |
7305 次 |
| 最近记录: |