有没有办法在Android中创建一个圆形按钮而不只是将可绘制的形状文件设置为背景?因为我想以编程方式设置按钮颜色,并将可绘制的形状文件设置为背景,所以它不起作用。我也使用了浮动操作按钮,但是当试图将颜色样本设置为背景时它没有用。
`public class MainActivity extends AppCompatActivity implements View.OnClickListener {
FloatingActionButton fab1, fab2, fab3, fab4, fab5,fab6;
ImageView imgV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fab1 = (FloatingActionButton) findViewById(R.id.bt1);
fab2 = (FloatingActionButton) findViewById(R.id.bt2);
fab3 = (FloatingActionButton) findViewById(R.id.bt3);
fab4 = (FloatingActionButton) findViewById(R.id.bt4);
fab5 = (FloatingActionButton) findViewById(R.id.bt5);
fab6 = (FloatingActionButton) findViewById(R.id.bt6);
imgV = (ImageView) findViewById(R.id.imageView);
fab1.setOnClickListener(this);
fab2.setOnClickListener(this);
fab3.setOnClickListener(this);
fab4.setOnClickListener(this);
fab5.setOnClickListener(this);
Bitmap bitmap = ((BitmapDrawable) imgV.getDrawable()).getBitmap();
if (bitmap != null) {
Palette.from(bitmap).maximumColorCount(10).generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
setViewSwatch(fab1, palette.getVibrantSwatch(), "Vibrant");
setViewSwatch(fab2, palette.getDarkVibrantSwatch(), "Dark Vibrant");
setViewSwatch(fab3, palette.getLightVibrantSwatch(), "Light Vibrant");
setViewSwatch(fab4, palette.getMutedSwatch(), "Muted");
setViewSwatch(fab5, palette.getLightMutedSwatch(), "Light Muted");
}
});
}
}
private void setViewSwatch(FloatingActionButton fab, Palette.Swatch vibrantSwatch, String vibrant) {
if (vibrantSwatch != null) {
fab.setBackgroundColor(vibrantSwatch.getRgb());
}
}
`
答案 0 :(得分:0)
我们的朋友'markushi'为Android圆形按钮编写了这段代码,也许它可以帮到你 https://github.com/markushi/android-circlebutton
答案 1 :(得分:0)
如果您需要圆形按钮在两种颜色之间切换,这是最简单的解决方案: 创建两个新的Drawable XML文件,如d1和d2
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#000000(Required colours hex value here)" />
<corners android:radius="10dip" />
<stroke
android:width="1dp"
android:color="@android:color/white" />
</shape>
将d1.xml的副本创建为d2.xml,然后只修改颜色值
在代码中,您可以按照以下方式以编程方式更改背景:
v.setBackgroundResource(R.drawable.d1);
v.setBackgroundResource(R.drawable.d2);
答案 2 :(得分:0)
我强烈建议您使用循环动作按钮,它可以轻松地以编程方式更改颜色
mFab.setBackgroundTintList(ColorStateList.valueOf(your color in int))
Also here is link for more info 我认为你可能会通过实施完全相同结果的其他解决方案(方式)来浪费你的时间 希望这会有所帮助;)