0

複数のxmlファイルを使用する代わりに、プログラムで作成したいクリック可能なimagebuttonビューが30以上あります。誰かが私がそうする方法を説明してもらえますか? 画像ボタンごとに、次のことを行う必要があります。

  1. R.drawable.button01、R.drawable.button02 など、プログラムで各ビューの ID に名前を付けて設定できるようにします。後で findViewById() を使用して参照する必要があるためです。

  2. 各イメージボタンはクリック可能で、ボタンごとにボタンを押した画像があるため、それぞれの xml リソース ファイルを使用する代わりに、ボタンを押すアクションを各ボタンに動的に割り当てる方法を理解する必要があります。

前もって感謝します。

4

3 に答える 3

1

Linear や Relative のように、任意のレイアウトをルートとして取得し、初期化します。

LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.HORIZONTAL);
ImageButton button =new ImageButton(context);
layout.addView(layout);
setContentView(layout);

これで問題が解決することを願っています。

于 2012-05-09T07:08:38.090 に答える
0

私のプロジェクトでは、学校向けのダイスゲーム(Yahtzee)を作成しています。ボタンについては、XMLで追加しました

<ImageButton
        android:id = "@+id/dice1"
        android:src = "@drawable/red_1_dice"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginTop = "60px"
        android:layout_marginLeft = "30px" />

    <ImageButton
        android:id = "@+id/dice2"
        android:src = "@drawable/red_2_dice"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginLeft = "250px" 
        android:layout_marginTop = "-130px"/>

    <ImageButton
        android:id = "@+id/dice3"
        android:src = "@drawable/red_3_dice"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginLeft = "135px"
        android:layout_marginTop = "20px" />

それから私のメインで私はこれをしました。

public class Z_veselinovic_yahtzeeActivity extends Activity 
{
    /** Called when the activity is first created. */

    ImageButton button1, button2, button3, button4, button5;
    Button start, reroll, hold;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Buttons();
    }


    public void Buttons()
    {


        button1 = (ImageButton)findViewById(R.id.dice1);
        button2 = (ImageButton)findViewById(R.id.dice2);
        button3 = (ImageButton)findViewById(R.id.dice3);
        button4 = (ImageButton)findViewById(R.id.dice4);
        button5 = (ImageButton)findViewById(R.id.dice5);

        start = (Button)findViewById(R.id.Start);
        reroll = (Button)findViewById(R.id.Reroll);
        hold = (Button)findViewById(R.id.Hold);

        reroll.setVisibility(View.GONE);
        hold.setVisibility(View.GONE);

        start.setOnClickListener(new OnClickListener()
        {
            public void onClick(View whatever)
            {

                Toast.makeText(getBaseContext(), start.getText() + " Game", Toast.LENGTH_LONG).show();

                Random rand1 = new Random();
                Random rand2 = new Random();
                Random rand3 = new Random();
                Random rand4 = new Random();
                Random rand5 = new Random();

                int dice_num_1 = rand1.nextInt(6) + 1;
                int dice_num_2 = rand2.nextInt(6) + 1;
                int dice_num_3 = rand3.nextInt(6) + 1;
                int dice_num_4 = rand4.nextInt(6) + 1;
                int dice_num_5 = rand5.nextInt(6) + 1;



                if(dice_num_1 == 1)
                {
                    button1.setImageResource(R.drawable.red_1_dice);
                }

                else if(dice_num_1 == 2)
                {
                    button1.setImageResource(R.drawable.red_2_dice);
                }

                else if(dice_num_1 == 3)
                {
                    button1.setImageResource(R.drawable.red_3_dice);
                }

                else if(dice_num_1 == 4)
                {
                    button1.setImageResource(R.drawable.red_4_dice);
                }

                else if(dice_num_1 == 5)
                {
                    button1.setImageResource(R.drawable.red_5_dice);
                }

                else if(dice_num_1 == 6)
                {
                    button1.setImageResource(R.drawable.red_6_dice);
                }




                if(dice_num_2 == 1)
                {
                    button2.setImageResource(R.drawable.red_1_dice);
                }

                else if(dice_num_2 == 2)
                {
                    button2.setImageResource(R.drawable.red_2_dice);
                }

                else if(dice_num_2 == 3)
                {
                    button2.setImageResource(R.drawable.red_3_dice);
                }

                else if(dice_num_2 == 4)
                {
                    button2.setImageResource(R.drawable.red_4_dice);
                }

                else if(dice_num_2 == 5)
                {
                    button2.setImageResource(R.drawable.red_5_dice);
                }

                else if(dice_num_2 == 6)
                {
                    button2.setImageResource(R.drawable.red_6_dice);
                }

これがお役に立てば幸いです。

于 2012-06-04T01:24:18.010 に答える
0

ビューにはsetId()、ID を設定するために使用できる関数があります。setImageResource()画像に使えます

于 2012-05-09T07:25:52.470 に答える