我有超过30个可点击的图像按钮视图,我想以编程方式创建,而不是使用多个xml文件。有人可以解释我怎么能这样做吗?对于每个图像按钮,我需要:
能够以编程方式命名和设置每个视图的ID,如R.drawable.button01,R.drawable.button02等,因为稍后我需要使用findViewById()返回它们。
每个图像按钮都是可点击的,每个按钮都有一个按下按钮的按钮,所以我需要弄清楚如何动态地为每个按钮分配按钮按动作,而不是为每个按钮使用xml资源文件。
提前致谢。
答案 0 :(得分:1)
将任何布局作为根,如线性或相对初始化..
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.HORIZONTAL);
ImageButton button =new ImageButton(context);
layout.addView(layout);
setContentView(layout);
我希望这能解决你的问题。
答案 1 :(得分:0)
视图具有可用于设置ID的函数setId()
。您可以使用setImageResource()
作为图片
答案 2 :(得分: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);
}
我希望这会有所帮助。