以编程方式为按钮编程创建可绘制背景

时间:2016-06-28 15:31:06

标签: android android-layout android-studio

我试图将可绘制背景设置为以编程方式创建的按钮。

下面是我创建按钮并设置背景的代码

Button increaseQuantity = new Button(this);
increaseQuantity.setText("+");
//increaseQuantity.setBackgroundResource(R.drawable.quantity_button);
increaseQuantity.setBackgroundDrawable(getResources().getDrawable(R.drawable.quantity_button));

下面是包含drawable

代码的xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
<stroke android:width="1dp" android:color="#ee404040" />
<size android:width="2dp" android:height="2dp"/>
<gradient android:startColor="#11809100" android:centerColor="#11910000" android:endColor="#55FFB900" android:angle="45" />
</shape>

根据xml我的按钮应该是圆形的(因为宽度和高度是相同的),但我不能得到一个圆形的按钮,而是我得到一个椭圆形的按钮。任何人都可以更正此代码以获得圆形按钮吗?

1 个答案:

答案 0 :(得分:0)

这里只有两件事:

  1. 替换弃用的方法:setBackgroundDrawablegetDrawable已弃用。
  2. 以编程方式设置尺寸
  3. 这应该做的工作:

    increaseQuantity.setBackground(ContextCompat.getDrawable(this, R.drawable.round));
    increaseQuantity.setLayoutParams(new LinearLayout.LayoutParams(100, 100));
    //replace 100 with your desired diameter of the button.
    

    此外,您必须将LinearLayout替换为您将按钮与之关联的父版式。