Android 个自定义按钮
Android custom buttons
我正在 android 中创建自定义按钮,但希望避免重复。
我正在尝试创建 2 个可切换按钮,它们共享相同的设计,但使用不同的图像图标而不是文本。
目前我有这个:
我正在使用这个 xml 作为可绘制资源:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<item>
<shape>
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<corners android:radius="20dp"/>
</shape>
</item>
<item>
<shape>
<padding
android:bottom="5dp"
android:left="-5dp"
android:right="5dp"
android:top="-5dp" />
<solid android:color="#edebeb"></solid>
<corners android:radius="20dp"/>
</shape>
</item>
<item>
<shape>
<size android:height="150dp" android:width="150dp"></size>
<padding
android:bottom="5dp"
android:left="-5dp"
android:right="5dp"
android:top="-5dp" />
<solid android:color="#fff"></solid>
<corners android:radius="20dp"/>
</shape>
</item>
</layer-list>
如何在不复制 xml 文件的情况下在每个按钮的中心显示不同的图像?
有什么方法可以将值传递给 activity 的 .java 文件中的每个按钮,以便我可以使用它为每个按钮显示不同的图像?
我发现这个工具非常有用:
http://angrytools.com/android/button/
如果您想要背景图片周围有边框,您可以尝试调整样式,尤其是 <stroke/>
标签。
.
只要每个按钮都有唯一的 ID,您就可以显示不同的图像。在您的布局 XML 中,为每个按钮添加 android:background="@drawable/img_file_name_without_xtension"
。
在 Java 中以编程方式执行此操作:
Button myButton = (Button) findViewById(R.id.buttonID);
myButton.setBackgroundResource(R.drawable.img_file_name_without_xtension);
如果您使用 ImageView
,那么您可以将图标设置为 src
,并且仍然使用您的可绘制对象作为背景:
<ImageView ...
android:src="@drawable/ic_whatever"
android:background="@drawable/background" />
所有视图都支持 onClick,所以它仍然可以充当按钮。或者,您可以嵌套可绘制对象,以便为每种不同的按钮样式设置以下内容:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<item android:drawable="@drawable/ic_whatever" />
<item android:drawable="@drawable/background" />
</layer-list>
我上面建议的 java 版本(来自 Activity
):
public void onCreate(...) {
...
((ImageView) findViewById(R.id.my_button)).setImageResource(R.drawable.ic_whatver);
}
我想对 thestalker
的回答进行补充。
使用库设计按钮并从代码更改图像源。
例子
<mehdi.sakout.fancybuttons.FancyButton
android:id="@+id/btn_twitter"
android:layout_width="50dp"
android:layout_height="30dp"
android:layout_below="@+id/imageView2"
android:layout_centerHorizontal="true"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:padding="7sp"
fancy:fb_borderColor="#55acee"
fancy:fb_borderWidth="2dp"
fancy:fb_defaultColor="#fff"
fancy:fb_focusColor="#4d55acee"
fancy:fb_iconResource="@drawable/twitter"
fancy:fb_radius="200dp" />
换行
fancy:fb_iconResource="@drawable/twitter"
到您想要的可绘制图像。
我正在 android 中创建自定义按钮,但希望避免重复。
我正在尝试创建 2 个可切换按钮,它们共享相同的设计,但使用不同的图像图标而不是文本。
目前我有这个:
我正在使用这个 xml 作为可绘制资源:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<item>
<shape>
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<corners android:radius="20dp"/>
</shape>
</item>
<item>
<shape>
<padding
android:bottom="5dp"
android:left="-5dp"
android:right="5dp"
android:top="-5dp" />
<solid android:color="#edebeb"></solid>
<corners android:radius="20dp"/>
</shape>
</item>
<item>
<shape>
<size android:height="150dp" android:width="150dp"></size>
<padding
android:bottom="5dp"
android:left="-5dp"
android:right="5dp"
android:top="-5dp" />
<solid android:color="#fff"></solid>
<corners android:radius="20dp"/>
</shape>
</item>
</layer-list>
如何在不复制 xml 文件的情况下在每个按钮的中心显示不同的图像?
有什么方法可以将值传递给 activity 的 .java 文件中的每个按钮,以便我可以使用它为每个按钮显示不同的图像?
我发现这个工具非常有用: http://angrytools.com/android/button/
如果您想要背景图片周围有边框,您可以尝试调整样式,尤其是 <stroke/>
标签。
.
只要每个按钮都有唯一的 ID,您就可以显示不同的图像。在您的布局 XML 中,为每个按钮添加 android:background="@drawable/img_file_name_without_xtension"
。
在 Java 中以编程方式执行此操作:
Button myButton = (Button) findViewById(R.id.buttonID);
myButton.setBackgroundResource(R.drawable.img_file_name_without_xtension);
如果您使用 ImageView
,那么您可以将图标设置为 src
,并且仍然使用您的可绘制对象作为背景:
<ImageView ...
android:src="@drawable/ic_whatever"
android:background="@drawable/background" />
所有视图都支持 onClick,所以它仍然可以充当按钮。或者,您可以嵌套可绘制对象,以便为每种不同的按钮样式设置以下内容:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<item android:drawable="@drawable/ic_whatever" />
<item android:drawable="@drawable/background" />
</layer-list>
我上面建议的 java 版本(来自 Activity
):
public void onCreate(...) {
...
((ImageView) findViewById(R.id.my_button)).setImageResource(R.drawable.ic_whatver);
}
我想对 thestalker
的回答进行补充。
使用库设计按钮并从代码更改图像源。
例子
<mehdi.sakout.fancybuttons.FancyButton
android:id="@+id/btn_twitter"
android:layout_width="50dp"
android:layout_height="30dp"
android:layout_below="@+id/imageView2"
android:layout_centerHorizontal="true"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:padding="7sp"
fancy:fb_borderColor="#55acee"
fancy:fb_borderWidth="2dp"
fancy:fb_defaultColor="#fff"
fancy:fb_focusColor="#4d55acee"
fancy:fb_iconResource="@drawable/twitter"
fancy:fb_radius="200dp" />
换行
fancy:fb_iconResource="@drawable/twitter"
到您想要的可绘制图像。