GridLayout 获取适合区域的按钮
GridLayout get buttons to fit area
我正在为 android 设计一款游戏。该代码已经可以使用,但是我在 UI 方面遇到了一些问题。所有的布局类型都很混乱,而且似乎从来没有对它们的属性进行有用的定义。本质上,我希望让以编程方式添加的按钮干净地填满屏幕底部的整个 space。可能有 2 到 6 个按钮,具体取决于玩家选择的难度设置。但最终,我什至会满足于在这里均匀地适合所有 6 个按钮的布局。我不太清楚为什么这没有填满 .xml 设计师指示的整个区域。我已尝试在下面提供相关部分,但很乐意根据要求添加其他详细信息。
这是网格布局的初始 XML
<GridLayout
android:layout_width="match_parent"
android:layout_height="182dp"
android:rowCount="2"
android:columnCount="3"
android:id="@+id/buttonsLayout"
android:layout_gravity="center"></GridLayout>
并在此处设置按钮:
private static void setButtons() {
for (int i = 0; i < GlobalValues.numberOfColors; i++) {
Button b = new Button(mainActivity);
ImageView IV = new ImageView(mainActivity);
switch (i) {
case 0:
IV.setImageResource(R.drawable.red);
b.setId(i);
break;
case 1:
IV.setImageResource(R.drawable.green);
b.setId(i);
break;
case 2:
IV.setImageResource(R.drawable.blue);
b.setId(i);
break;
case 3:
IV.setImageResource(R.drawable.yellow);
b.setId(i);
break;
case 4:
IV.setImageResource(R.drawable.purple);
b.setId(i);
break;
case 5:
IV.setImageResource(R.drawable.cyan);
b.setId(i);
break;
default:
break;
}
b.setBackgroundDrawable(IV.getDrawable());
b.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
UI.UpdateColor(view);
}
});
buttonsLayout.addView(b);
}
}
最后,这是它目前的样子。它显然没有很好地利用整个区域,我不确定为什么。
Align Buttons in GridLayout 可能会对您有所帮助。我知道这不完全是你的情况,但你说现在它足以解决 6 个按钮,所以这可能有效。顺便说一句,如果我是你,我会根据按钮的数量使用不同的布局来使它们美观。但是从 6 开始才是正道。
我正在为 android 设计一款游戏。该代码已经可以使用,但是我在 UI 方面遇到了一些问题。所有的布局类型都很混乱,而且似乎从来没有对它们的属性进行有用的定义。本质上,我希望让以编程方式添加的按钮干净地填满屏幕底部的整个 space。可能有 2 到 6 个按钮,具体取决于玩家选择的难度设置。但最终,我什至会满足于在这里均匀地适合所有 6 个按钮的布局。我不太清楚为什么这没有填满 .xml 设计师指示的整个区域。我已尝试在下面提供相关部分,但很乐意根据要求添加其他详细信息。
这是网格布局的初始 XML
<GridLayout
android:layout_width="match_parent"
android:layout_height="182dp"
android:rowCount="2"
android:columnCount="3"
android:id="@+id/buttonsLayout"
android:layout_gravity="center"></GridLayout>
并在此处设置按钮:
private static void setButtons() {
for (int i = 0; i < GlobalValues.numberOfColors; i++) {
Button b = new Button(mainActivity);
ImageView IV = new ImageView(mainActivity);
switch (i) {
case 0:
IV.setImageResource(R.drawable.red);
b.setId(i);
break;
case 1:
IV.setImageResource(R.drawable.green);
b.setId(i);
break;
case 2:
IV.setImageResource(R.drawable.blue);
b.setId(i);
break;
case 3:
IV.setImageResource(R.drawable.yellow);
b.setId(i);
break;
case 4:
IV.setImageResource(R.drawable.purple);
b.setId(i);
break;
case 5:
IV.setImageResource(R.drawable.cyan);
b.setId(i);
break;
default:
break;
}
b.setBackgroundDrawable(IV.getDrawable());
b.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
UI.UpdateColor(view);
}
});
buttonsLayout.addView(b);
}
}
最后,这是它目前的样子。它显然没有很好地利用整个区域,我不确定为什么。
Align Buttons in GridLayout 可能会对您有所帮助。我知道这不完全是你的情况,但你说现在它足以解决 6 个按钮,所以这可能有效。顺便说一句,如果我是你,我会根据按钮的数量使用不同的布局来使它们美观。但是从 6 开始才是正道。