ActivityGroup下子Activity的布局问题

来源:互联网 发布:金本位 知乎 编辑:程序博客网 时间:2024/05/22 16:53

ActivityGroup的用法就是用来盛放多个Activity的容器,用来切换子A!

定义ActivityGroup的时候会使用Layout_Weight=1来使得子A充满剩余空间
比如:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:background="@drawable/back">    <RelativeLayout     android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:background="#60686868"    android:paddingTop="3dp"    android:paddingLeft="15dp"    android:paddingBottom="2dp"    android:paddingRight="7dp"    >    <Button     android:id="@+id/btn_back"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/drawale_btn_write"    />    <TextView    android:id="@+id/tv_viewInfo"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textSize="28dp"    android:textColor="@color/clr_white"    android:text="viewinfo"    android:layout_centerHorizontal="true"    />    <Button    android:id="@+id/btn_refresh"    android:layout_alignParentRight="true"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/refresh"    >       </Button>    <ProgressBar    android:id="@+id/pro_refresh"    android:layout_width="40dp"    android:layout_height="40dp"    android:visibility="gone"    android:layout_alignParentRight="true"    style="?android:attr/progressBarStyleSmall"    />    </RelativeLayout> <LinearLayout  android:id="@+id/containerBody" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" >  </LinearLayout>       <LinearLayout    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:background="#60686868"    android:layout_gravity="bottom"    android:orientation="horizontal"       >    <ImageView     android:id="@+id/view_msg"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/index"    android:paddingRight="9dp"    android:paddingLeft="9dp"    />        <ImageView     android:id="@+id/view_cmt"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/cmt"    android:paddingRight="9dp"    android:paddingLeft="9dp"    />        <ImageView     android:id="@+id/view_info"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/info"    android:paddingRight="9dp"    android:paddingLeft="9dp"    />        <ImageView     android:id="@+id/view_search"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/search"    android:paddingRight="9dp"    android:paddingLeft="9dp"    />        <ImageView     android:id="@+id/view_setting"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/setting"    android:paddingRight="9dp"    android:paddingLeft="9dp"    />       </LinearLayout></LinearLayout>

下面的ImageView来切换子A。

通过父A的中间的View来盛放,但是中间这个View的高度不是xml定义的高度与宽度,是自适应的。

他的布局文件时这样的
<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#00000000"><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  android:layout_width="fill_parent"android:layout_height="fill_parent"  android:paddingTop="2dp">    <RelativeLayout   android:id="@+id/btn_user_info_img"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_gravity="center_vertical"    android:background="@drawable/info_item_back"    android:clickable="true"    >    <ImageView    android:id="@+id/img_head"     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/img_man"    />    <TextView    android:layout_toRightOf="@id/img_head"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/info_setImg"    android:layout_marginLeft="8dp"    android:textSize="15dp"    android:paddingTop="20dp"    />    </RelativeLayout>    <LinearLayout     android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:id="@+id/btn_user_info_name"    android:background="@drawable/info_item_back"    android:layout_alignLeft="@id/btn_user_info_img"    android:clickable="true"    >    <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/info_name"    android:layout_marginLeft="8dp"    android:textSize="15dp"    />    <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="fangwuze"    android:layout_marginLeft="18dp"    android:textSize="10dp"    />    </LinearLayout>    <LinearLayout     android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:id="@+id/btn_user_info_sex"    android:background="@drawable/info_item_back"    android:clickable="true"    >    <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/info_sex"    android:layout_marginLeft="8dp"    android:textSize="15dp"    />    <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="man"    android:layout_marginLeft="18dp"    android:textSize="10dp"    />    </LinearLayout>      <RelativeLayout     android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:id="@+id/btn_user_info_mood"    android:background="@drawable/info_item_back"    android:clickable="true"    >    <TextView    android:id="@+id/btn_user_info_mood"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/info_mood"    android:layout_marginLeft="8dp"    android:textSize="15dp"    />    <TextView    android:layout_below="@id/btn_user_info_mood"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="nishibushiwo"    android:layout_marginLeft="18dp"    android:textSize="10dp"    />    </RelativeLayout>        <LinearLayout     android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:id="@+id/btn_user_info_name"    android:background="@drawable/info_item_back"    android:layout_alignLeft="@id/btn_user_info_img"    android:clickable="true"    android:gravity="center_horizontal"    >    <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/info_password"    android:layout_marginLeft="8dp"    android:textSize="15dp"    />    </LinearLayout></LinearLayout></ScrollView>

明显是使用了fill_parent!为什么它无法充满屏幕?原来父控件的尺寸就不是fill_parent,是自适应的。

所以在给中间的View 添加子A的时候,需要额外的给它设置参数,以上的问题就得到解决。

activity_container.removeAllViews();View childView = getLocalActivityManager().startActivity(CampusConstants.ID_ACTIVITY[id], new Intent(MainActivityGroup.this,activity).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)).getDecorView();childView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));activity_container.addView(childView);