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

时间:2013-12-08 14:30:03

标签: 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"/>
    <corners
 android:bottomRightRadius="5dp"
 android:bottomLeftRadius="5dp"
 android:topLeftRadius="5dp"
 android:topRightRadius="5dp"/>
</shape>

在layout.xml中,我将rounded_edittext.xml的名称设置为background属性

 <Button
    android:id="@+id/loginBtn"    
    android:text="Log In"
     android:layout_width="276dp"
     android:layout_height="40dp"
     android:ems="10"  
     android:background="@drawable/rounded_edittext"
     android:textColor="#aaa"

  />

如果我想为另一个按钮设置另一种颜色,我应该制作另一个xml文件!它不是可用的编码方式。是否有另一个更好的想法同时制作不同的背景颜色和圆角?

修改

尝试以编码方式编写代码@hamad回答此错误发生

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)

1 个答案:

答案 0 :(得分:1)

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

XML Layout layout_gradiant

<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);   

根据您的意愿改变颜色!

欢呼声, 哈马德