如何以编程方式创建任何形式的按钮?

时间:2016-06-11 09:35:53

标签: android android-studio button

我想创建一个带有一些属性的按钮。

  1. 它可以有任何形式,颜色和位置。
  2. 可以在应用程序中更改这些参数
  3. 按钮可以在触摸时更改其颜色
  4. 我尝试使用CanvasDrawonTouchEvent。但是存在更简单快速的方法吗?任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用下面的xml文件来为按钮创建状态。

您只需将此xml文件复制到项目中的drawables文件夹,并将其命名为custom_button.xml。

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" >
    <shape android:shape="rectangle">
        <solid
            android:color="#00ff00" />
        <stroke
            android:width="5dp"
            android:color="#ff0000"
            android:dashWidth="3dp"
            android:dashGap="2dp" />
    </shape>
</item>

<item android:state_focused="true" >
    <shape>
        <gradient
            android:endColor="#ffffff"
            android:centerColor="#ffffff"
            android:startColor="#ffffff"
            android:angle="270" />
        <stroke
            android:width="3dp"
            android:color="#00ff00" />
        <corners
            android:radius="5dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
    </shape>
</item>

<item>        
    <shape>
        <gradient
            android:endColor="#ffffff"
            android:centerColor="#ffffff"
            android:startColor="#ffffff"
            android:angle="270" />
        <stroke
            android:width="5dp"
            android:color="#00ff00" />
        <corners
            android:radius="5dp" />
    </shape>
</item>

并使用onCreate方法中的以下代码在您的布局中引用它

LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);

        //set the properties for button
        Button btnTag = new Button(this);
        btnTag.setLayoutParams(new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT));
        btnTag.setText("Button");
        btnTag.setId(some_random_id);
        btnTag.setBackground(getResources().getDrawable(R.drawable.custom_button));