Android片段重叠以前的视图和按钮监听器
我有一个活动A与里面的片段A.Android片段重叠以前的视图和按钮监听器
活性A使用布局X,和片段A使用布局A.
代码布局X的:
<RelativeLayout 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"
tools:context=".MainActivity" >
<fragment
android:id="@+id/fragment1"
android:name="android.app.DialogFragment"
android:layout_width="wrap_content"
android:layout_height="500dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="113dp"
class="com.example.fragtester.FragA" />
</RelativeLayout>
布局A是仅有的TextView +的LinearLayout。
我设置使用布局B.
现在,我使用以下代码中活性的改变片段另一片段B:
Fragment f = new FragB();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment1, f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
我最终布局乙下布局显示A.
所以我使用的FrameLayout包裹的片段布局X和使用
ft.replace(R.id.FrameLayout1, f);
现在视图很好地工作。虽然,另一个问题出现了。
尽管布局B覆盖布局A,但按钮仍处于活动状态。
这意味着当我查看布局B时,即使我没有看到它,我仍然可以单击布局A上的按钮。
甚至当我添加碎片C/D/E .....(布局C/D/E ....)时,布局A上的按钮仍处于活动状态。
任何人都可以解释为什么是这样吗?我是否错误地使用了片段?谢谢!
一种通过的方法是使布局A空白,并使用其他布局来覆盖它。但它似乎并不是“正确”的方式?
而不是在您的XML中有片段,尝试创建一个碎片的空容器。例如空框架布局。然后以编程方式将你的片段放在那里。
取出片段并添加的FrameLayout
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
</FrameLayout>
然后以编程添加片段。
在android片段按钮中点击传递片段(我不知道片段是否应该像这样工作)。在这种情况下我曾经做过的事情是让片段的布局可点击。所以点击不会通过。
我知道这是为什么吗?在布局和编程中添加片段有什么区别?谢谢! – 2013-03-13 08:05:55
将以下属性添加到顶层片段的XML根布局中。
android:clickable="true"
这将确保触摸事件不会比顶层传播得更远。
请问您能解释一下为什么是这样吗?谢谢!! – 2013-03-13 08:06:22