同一个Activity通过frameLayout的方式放置一个fragment,通过其中一个fragment来启动另外一个fragment
出现了如下的错误,两个fragment重叠到一起了,导致了控件的重叠
布局如下:
主布局:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragment"
android:name="com.example.lyh.myapplication.MainActivityFragment"
tools:layout="@layout/fragment_main" android:layout_width="match_parent"
android:layout_height="match_parent"/>
第一个fragment布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivityFragment"
android:orientation="vertical"
android:layout_margin="0dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/but1"
android:text="启动另一个fragment" />
</LinearLayout>
</FrameLayout>
第二个fragm布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/te2"
android:text="这是另一个fragment"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/but2"
android:text="返回"/>
</LinearLayout>
</FrameLayout>
解决方法,在第二个fragment的FrameLayout里给个加个白色的背景:
android:background="#ffffff"
为了不让点击第二个fragment的某些地方,触发第一个fragment里的控件事件,需要在第二个fragment的FrameLayout里加上:
android:clickable="true"问题到此得到解决