0

我有两种布局,一种只是作为背景,另一种将位于它的中心,占据屏幕的一半左右。我有我认为可以做到这一点的代码,但是当应用程序运行时,我所包含的视图占据了整个屏幕,我无法弄清楚为什么会发生这种情况。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<include
    android:layout_width="500dp"
    android:layout_height="500dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    layout="@layout/activity_main" />

</RelativeLayout>

第二个xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000" >

<FrameLayout
    android:id="@+id/frmPreview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center" >
</FrameLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="left"
    android:gravity="center_vertical"
    android:orientation="vertical" >
</LinearLayout>

<ImageView
    android:id="@+id/imgShoot"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="bottom|center"
    android:background="@drawable/aperture_closing" />

4

2 回答 2

0

layout除了标签之外,您不能指定任何属性<include>,因为它将完全被您包含的布局的根元素替换,并且它们将被删除。此外,您不需要RelativeLayout让孩子居中。出于性能原因,最好使用 FrameLayout。

家长

<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <include layout="@layout/activity_main" />

</RelativeLayout>

孩子们

<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="500dp"
  android:layout_height="500dp"
  android:layout_gravity="center"
  android:background="#00000000">

  <FrameLayout
    android:id="@+id/frmPreview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center">
  </FrameLayout>

  <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="left"
    android:gravity="center_vertical"
    android:orientation="vertical">
  </LinearLayout>

  <ImageView
    android:id="@+id/imgShoot"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="bottom|center"
    android:background="@drawable/aperture_closing"/>

</FrameLayout>

请注意,如果父FrameLayout级不包含除<include>标签以外的任何视图,您可以安全地跳过父级布局,直接使用子级布局。每个活动的根都已经有一个 FrameLayout。

于 2013-07-17T16:48:31.820 回答
0

尝试使用权重。

android:layout_weight="1"
于 2013-07-17T16:13:20.397 回答