我有一个带有12个按钮的RelativeLayout,我想在屏幕中央很好地对齐它们,并且彼此之间的距离相等,左右边距相等(如计算器按钮或电话按钮)。我所做的是在这个XML文件和pic中的结果,但它仍然不完美。你们有更好的解决方案吗?
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tabview1">
<TextView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="www.fasttest.me"
android:textColor="@android:color/white"/>
<Button
android:id="@+id/ql0"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="100dp"
android:layout_marginLeft="10dp"
android:text="b0" />
<Button
android:id="@+id/ql1"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="100dp"
android:layout_marginLeft="80dp"
android:text="b1" />
<Button
android:id="@+id/ql2"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="100dp"
android:layout_marginLeft="150dp"
android:text="b2" />
<Button
android:id="@+id/ql3"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="100dp"
android:layout_marginLeft="220dp"
android:text="b3" />
<Button
android:id="@+id/ql4"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="180dp"
android:layout_marginLeft="10dp"
android:text="b4" />
<Button
android:id="@+id/ql5"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="180dp"
android:layout_marginLeft="80dp"
android:text="b5" />
<Button
android:id="@+id/ql6"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="180dp"
android:layout_marginLeft="150dp"
android:text="b6" />
<Button
android:id="@+id/ql7"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="180dp"
android:layout_marginLeft="220dp"
android:text="b7" />
<Button
android:id="@+id/ql8"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="260dp"
android:layout_marginLeft="10dp"
android:text="b8" />
<Button
android:id="@+id/ql9"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="260dp"
android:layout_marginLeft="80dp"
android:text="b9" />
<Button
android:id="@+id/ql10"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="260dp"
android:layout_marginLeft="150dp"
android:text="b10" />
<Button
android:id="@+id/ql11"
android:layout_width="@dimen/qlbutton_width"
android:layout_height="@dimen/qlbutton_height"
android:layout_marginTop="260dp"
android:layout_marginLeft="2dp"
android:text="b11" />
</RelativeLayout>
答案 0 :(得分:3)
我建议你在GridView中使用按钮。给每个按钮相同的重量,使其伸展自己:
<Button
android:id="@+id/ql3"
android:layout_height="@dime/button_height"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="@dimen/buttons_padding"
android:text="b3" />
答案 1 :(得分:1)
您可以使用Romain Guy的这个自定义GridLayout。指定行数和列数。屏幕将被分成相同大小的单元格。
以下是link
答案 2 :(得分:0)
我终于完成了一个按钮网格视图。这是代码:
public class MainActivity extends Activity {
public String[] filenames ={"B1","B2","B3","B4","B5","B6"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ButtonAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent,
View v, int position, long id){
Toast.makeText(getBaseContext(),
"pic" + (position + 1) + " selected",
Toast.LENGTH_SHORT).show();
}
});
}
public class ButtonAdapter extends BaseAdapter {
private Context context;
public ButtonAdapter(Context c){
context = c;
}
public int getCount() {
return filenames.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent){
Button btn;
if (convertView == null) {
btn = new Button(context);
btn.setLayoutParams(new GridView.LayoutParams(100, 100));
btn.setPadding(8, 8, 8, 8);
btn.setFOcusable(false);
btn.setClickable(false);
}else {
btn = (Button) convertView;
}
btn.setText(filenames[position]);
btn.setTextColor(Color.WHITE);
btn.setId(position);
return btn;
}
}
}