2013-12-08 95 views
-1

如何制作具有不同背景色和圆角的多个按钮? 我可以通过绘制文件夹下制作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的名称属性背景

<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

我创建了gradiant项目绘制它就像魅力对我来说,这里是代码:

XML布局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); 

变色!

欢呼声, 哈马德

+0

我正在寻找一种方式,通过XML布局来解决它,我会继续努力,如果它不工作,我会解决语法,谢谢。 – palAlaa

+0

我不认为这是另一种方式!你可以使这个方法,并为不同的按钮调用不同的颜色! – Hamad

+0

当代码到达执行的这一行时,会出现空指针异常loginBtn.setBackgroundDrawable(gdDefault);你认为什么问题? – palAlaa

相关问题