我有12个按钮,它们必须均匀分布在布局的水平轴和垂直轴上。我无法使用GridLayout
。这应该是它的样子:
另外,由于错误使用weight
属性,我不想收到有关性能问题的消息。现在我正在尝试使用RelativeLayout
,将每个按钮的位置设置为与其他按钮相关,但也许有更简单/更容易/更推荐的方式。
更新
所以,我决定使用GridView
,这是我现在的代码:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menuGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="32dp"
android:numColumns="3"
android:verticalSpacing="5dp"
android:horizontalSpacing="5dp"
android:stretchMode="spacingWidthUniform"
android:gravity="fill" />
我的适配器类是:
public class GridAdapter extends BaseAdapter {
// Different methods ...
// Images for the buttons
private Integer[] mThumbIds = {
R.drawable.btn_1, R.drawable.btn_2, R.drawable.btn_3,
R.drawable.btn_4, R.drawable.btn_5, R.drawable.btn_6,
R.drawable.btn_7, R.drawable.btn_8, R.drawable.btn_9,
R.drawable.btn_10, R.drawable.btn_11, R.drawable.btn_12
};
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageButton imageButton;
if (convertView == null) {
imageButton = new ImageButton(mContext);
imageButton.setLayoutParams(new GridView.LayoutParams(48, 48));
imageButton.setScaleType(ImageButton.ScaleType.CENTER_CROP);
} else {
imageButton = (ImageButton) convertView;
}
imageButton.setImageResource(mThumbIds[position]);
return imageButton;
}
}
在我的主要活动中,我正在设置这样的适配器(它们居中并且不会占据整个空间):
GridView gridview = (GridView) v.findViewById(R.id.menuGrid);
gridview.setAdapter(new GridAdapter(this));
但按钮显示如下(居中和小,而不是占据整个区域):
答案 0 :(得分:1)
我无法使用GridLayout
所以请使用自API 1以来可用的GridView
>>> LINK <<<。就像ListView(减去页脚n标题)和numColumns
参数一样
答案 1 :(得分:0)
您可以尝试:
GridLayout
,可通过Android支持包的gridlayout-v7
图书馆计划
TableLayout
,使用android:stretchColumns
为所有列分配空间......但这只有在单元格本身具有相同宽度时才有效
嵌套LinearLayouts
和android:layout_weight
,因为对性能的担忧对您来说可能是也可能不是问题(例如,这是一个单独的活动或片段布局,而不是一个行中的一行ListView
)
而且,您始终可以使用自己的业务规则实施自己的ViewGroup
,以便调整和定位子窗口小部件。
您目前正在尝试的内容 - RelativeLayout
- 似乎不太可能以适应不同屏幕尺寸的方式运作。