Android 如何制作具有不同背景颜色和圆角的多个按钮

Android 如何制作具有不同背景颜色和圆角的多个按钮,android,xml,user-interface,background-color,Android,Xml,User Interface,Background Color,如何制作具有不同背景颜色和圆角的多个按钮? 通过在drawable文件夹下创建rounded_edittext.xml并使用此代码,我只能创建一个带有白色圆角背景的按钮 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="#FFFFFF"/>

如何制作具有不同背景颜色和圆角的多个按钮? 通过在drawable文件夹下创建
rounded_edittext.xml
并使用此代码,我只能创建一个带有白色圆角背景的按钮

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
 <solid android:color="#FFFFFF"/>
    <corners
 android:bottomRightRadius="5dp"
 android:bottomLeftRadius="5dp"
 android:topLeftRadius="5dp"
 android:topRightRadius="5dp"/>
</shape>

我在gradiant drawable上创建了一个项目,它对我来说就像魅力一样,下面是代码:

XML布局\u梯度

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Gradiant" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="Gradient Drawable"
        android:textColor="#899999"
        android:textSize="30sp" />

    <Button
        android:id="@+id/btnGradient"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="60dp"
        android:layout_marginTop="150dp"
        android:text="" />

</RelativeLayout>
根据你的愿望改变颜色

干杯,
哈马德

我正在寻找一种通过XML布局解决它的方法,如果它不起作用,我会继续尝试,我会用语法解决它,谢谢。我认为没有其他方法可以解决这个问题!您可以将其作为一种方法,并为不同的按钮调用不同的颜色!当代码到达执行loginBtn.setBackgroundDrawable(gdDefault)的这一行时,出现空指针异常;你认为问题出在哪里?在你的问题中加入logcat,这样我就能理解异常原因@帕拉拉
12-14 22:13:47.711: E/AndroidRuntime(1369): java.lang.RuntimeException: Unable to start  activity ComponentInfo{com.example.guidi/com.trasport.guidi.MainActivity}: java.lang.NullPointerException
12-14 22:13:47.711: E/AndroidRuntime(1369):     at com.trasport.guidi.MainActivity.onCreate(MainActivity.java:25)
12-14 22:15:21.841: E/AndroidRuntime(2322): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.guidi/com.trasport.guidi.MainActivity}: java.lang.NullPointerException
12-14 22:15:21.841: E/AndroidRuntime(2322):     at com.trasport.guidi.MainActivity.onCreate(MainActivity.java:25)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Gradiant" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="Gradient Drawable"
        android:textColor="#899999"
        android:textSize="30sp" />

    <Button
        android:id="@+id/btnGradient"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="60dp"
        android:layout_marginTop="150dp"
        android:text="" />

</RelativeLayout>
import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.shapes.Shape;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class Gradiant extends Activity {
    //controls declaration
    Button btnGradient;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gradiant);
        //best practice to initialize controls
        initializeControls();
    }
    private void initializeControls() {
        //Button Instance
        btnGradient=(Button)findViewById(R.id.btnGradient);
        //set click listener to Button
        btnGradient.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                setBtnBackGround(Color.CYAN, 10,10, Color.GREEN, btnGradient);
            }
        });
    }

    public void setBtnBackGround(int color,int r,int stkW,int stkColor,Button btn){
        //Create instance of Gradient Drawable
        GradientDrawable gdDefault = new GradientDrawable();
        //set color
        gdDefault.setColor(color);
        //set corner radius 
        gdDefault.setCornerRadius(r);
        //stroke width
        gdDefault.setStroke(stkW,stkColor);
            //it works below api level 16
        btn.setBackgroundDrawable(gdDefault);

    }
}
            //use this above API level 16
        btn.setBackground(gdDefault);