如何制作具有不同背景颜色和圆角的多个按钮?
通过在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)
答案 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);
根据您的意愿改变颜色!
欢呼声, 哈马德