读书人

解决Android使用ActivityGroup打开Act

发布时间: 2012-09-09 09:27:54 作者: rapoo

解决Android使用ActivityGroup打开Activity后控件无法居中问题

近日在开发过程中被控件的居中问题搞得焦头烂额,所以打算写篇博客记录一下

我在程序中使用ActivityGroup实现程序的仿iPhone Tab界面,将打开的其他Activity显示在布局的一个RelativeLayout中,,但是出现了打开的Activity中的控件无法在RelativeLayout中居中显示。


我们先看一下ActivityGroup的layout

View friendView = getLocalActivityManager().startActivity("FriendsListActivity", new Intent(OriMainActivity.this, FriendsListActivity.class)).getDecorView();addFillParams(friendView);bodyView.addView(friendView);

这样一来从打开的Activity获取的View便可以填充在ActivityGroup的Layout中的RelativeLayout中了

当然,Activity中的控件也可以居中了


以下是一些个人走的弯路,以作警示:

1、LinearLayout的子控件居中问题

如果LinearLayout的orientation属性为vertical,那么子空间的layout_gravity可起作用的只有和horizontal有关的(center_horizontal等)。

同理,LinearLayout的orientation属性为horizontal,那么子空间的layout_gravity可起作用的只有和vertical有关的(center_vertical等)。

如果要想使LinearLayout的子控件居中,那么便可以设置LinearLayout的gravity属性为center,这样便可以在父容器设置子控件的位置,

但这样一来子控件的layout_gravity便不再起作用

2、RelativeLayout的子控件居中问题

开始我尝试在子控件中设置layout_gravity=center,但是却没有得到应该的布局

后来经过尝试,发现使用android:layout_centerInParent="true"可以达到目的

(RelativeLayout中有很多类似于layout_centerInParent的自有属性,通过这些属性可以替代layout_gravity)


读书人网 >Android

热点推荐