我想把一组按钮居中 水平和垂直在 显示。
这就是我现在所拥有的:
自定义RelativeLayout:
RelativeLayout xml_layout = (RelativeLayout) findViewById(R.id.custom_layout_id);
我以编程方式创建按钮并将它们添加到xml_layout:
xml_layout.addView(ib[i], lp);
我想我必须使用ViewGroup,然后添加我的按钮 到ViewGroup,添加规则以使ViewGroup居中 然后将ViewGroup添加到我的RelativeLayout。
我试过这个
ViewGroup vg;
vg.addView(ib[i], lp); //The local variable vg may not have been initialized
和这个
ViewGroup vg = null;
vg.addView(ib[i], lp); //Runtime Error
但它不起作用。
我新理论:
但不知道这种做法。 有人能帮助我吗?
答案 0 :(得分:1)
也许这会给你一个想法:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:weightSum="5">
<Button
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="ABC" />
<Button
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="DEFG" />
<Button
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="HI" />
<Button
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="J" />
</LinearLayout>
答案 1 :(得分:0)
如果您希望将按钮作为一个组居中,则需要将它们添加到LinearLayout而不是RelativeLayout。然后你可以为它们每个使用相同的布局参数(WRAP_CONTENT / WRAP_CONTENT),它们不会叠加在一起并相互模糊。
对于LinearLayout,请为其设置宽度和高度为FILL_PARENT的LayoutParams。
每当你使用LayoutParams时,我建议你总是指定哪种LayoutParams,以避免类转换问题,这可能是你发生的事情。例如,每个按钮的布局参数应为LinearLayout.LayoutParams,而LinearLayout的参数应为ViewGroup.LayoutParams。
最后,你已经调用了setContentView()吗?该视图是否已在其中包含id为custom_layout_id的RelativeLayout?
答案 2 :(得分:0)
ViewGroup vg = null
是不够的,因为您尝试在下一行中取消引用null:vg.addView(ib[i], lp);
。而是使用its constructors之一创建ViewGroup。最简单的方法是ViewGroup vg = new ViewGroup(this);
。