2

ボタンを丸く、ランダムな背景色にしようとしていますか? 以下のコードを試したところ、ボタンが丸くなっていません。

コードは次のとおりです。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newtestament);
    LinearLayout layout = (LinearLayout) findViewById(R.id.linearlayoutnew);
    String[] values = { "Matthai", "Marka", "Luka", "Johan",
            "Sawltak Tangthu", "Rom Laikhak", "Korin Masa", "Korin Nihna",
            "Galati", "Efesa", "Filippi", "Kolose", "Thesalonika Masa",
            "Thesalonika Nihna", "Timoti Masa", "Timoti Nihna", "Titus",
            "Filemon", "Hebru", "James", "Peter Masa", "Peter Nihna",
            "Johan Masa", "Johan Nihna", "Johan Thumna", "Jude",
            "Maangmuhna" };
    Button[] b = new Button[values.length];
    for (int i = 0; i < b.length; i++) {
        b[i] = new Button(this);
    }
    int[] btnColor = { 0xAAe60038, 0xAA9142d6, 0xAAf07b04, 0xAA1515ff,
            0xAA23699e, 0xAA0a71ff, 0xAA3e3d39, 0xAA00b323, 0xAA754e45,
            0xAAfa061e, 0xAAe66d2d, 0xAAff00ff };
    // calling random
    Random random = new Random();
    // ramdomizing a color
    int c = btnColor[random.nextInt(btnColor.length)];
    for (int i = 0; i < values.length; i++) {

        // applying button rounded xml style
        b[i].setBackgroundDrawable(getResources().getDrawable(
                R.drawable.round));
        // setting randomized color
        b[i].setBackgroundColor(c);
        // layout
        LayoutParams params = new LinearLayout.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        // margin
        ((MarginLayoutParams) params).setMargins(5, 5, 5, 5);
        // padding
        b[i].setPadding(10, 10, 10, 10);
        // text color
        b[i].setTextColor(0xFFFFFFFF);
        // text
        b[i].setText(values[i]);
        // text size
        b[i].setTextSize(18);
        Typeface face = Typeface.createFromAsset(getBaseContext()
                .getAssets(), "UBUNTU-R.TTF");
        b[i].setTypeface(face);
        layout.addView(b[i], params);

    }

}

ここに round.xml があります:

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

<!-- you can use any color you want I used here gray color -->
<corners
    android:bottomLeftRadius="5dp"
    android:bottomRightRadius="5dp"
    android:topLeftRadius="5dp"
    android:topRightRadius="5dp" />
    </shape>

問題はsetBackgroundDrawable、setBackgroundColor、romdomizingだと思います。どのような追加コードが必要ですか? ???
更新: round.xml を編集してボタンを丸くする方法は?

4

2 に答える 2

3

ボタンの背景を描画可能として設定し、次に色も設定しています。したがって、ステートメントは順次実行されます。したがって、最終的にはボタンに背景色を設定する必要があります。そのため、そのうちの 1 つにコメントを付けて、コードを再度実行してみてください。

    b[i].setBackgroundDrawable(getResources().getDrawable( R.drawable.round));
    // set background drawable
    // first your background drawable will be set
    b[i].setBackgroundColor(c);
    //set background color.  

drawable フォルダー内の bkg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" 
    android:drawable="@drawable/pressed" />
<item  android:state_focused="false" 
    android:drawable="@drawable/normal" />
</selector>

通常の.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FFFFFF"/>    
<stroke android:width="3dp"
        android:color="#0FECFF" /><!-- #330000FF #ffffffff -->

<padding android:left="5dp"
         android:top="5dp"
         android:right="5dp"
         android:bottom="5dp"/> 
<corners android:bottomRightRadius="7dp"
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp"
         android:topRightRadius="7dp"/> 
</shape>

押された.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FF1A47"/>    
<stroke android:width="3dp"
        android:color="#0FECFF"/>
<padding android:left="5dp"
         android:top="5dp"
         android:right="5dp"
         android:bottom="5dp"/> 
<corners android:bottomRightRadius="7dp"
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp"
         android:topRightRadius="7dp"/> 
</shape>

  b[i].setBackgroundResource(R.drawable.bkg);

スナップショット

ここに画像の説明を入力

編集:

  int colors []= {Color.RED, Color.BLACK, Color.BLUE,Color.GREEN};
  Random r = new Random();
    for (int i = 0; i < colors.length; i++) {
        b[i].setBackgroundColor(colors[r.nextInt(3)]);
    }   
于 2013-04-13T10:06:07.013 に答える
2

Documentを見てください 。view.setBackgroundDrawable(drawable) 一度にb[i].setBackgroundColor(c);両方を使用することはできません。最後の 1 つだけが有効になります。

于 2013-04-13T09:57:05.600 に答える