我想从Fragment
调用一个简单的Activity
。它在棒棒糖前工作正常。但是在棒棒糖设备上,活动布局的Button
与片段布局重叠。这是我的代码:
MyFragment
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.layout_myfragment,container,false);
}}
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyFragment frag = new MyFragment();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fragment, frag , "TagMy");
transaction.commit();
}
MainActivity
的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
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=".MainActivity"
android:id="@+id/main">
<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:text="New Button"
android:id="@+id/button"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_marginTop="120dp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment">
</RelativeLayout>
</RelativeLayout>
Fragment
的布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="#ff0000">
</FrameLayout>
答案 0 :(得分:0)
你需要在RelativeLayout main中有一个片段容器。
对于片段容器,使用RelativeLayout或FrameLayout。
在XML中,将片段容器放在主布局中,然后放在Button和TextView之后。原因是当小部件占用相同的空间时(就像你的情况下你的按钮和片段容器一样),最后一个出现在你的XML文件中的是最后一个。
您不应将主布局用作片段容器。
编辑:一旦更改了XML文件(使用RelativeLayout或FrameLayout作为容器),您需要更新FragmentTransaction以使用此容器:
transaction.add(R.id.fragment, frag , "TagMy");
此外,我可以在您的代码中看到您在XML文件中创建了一个Fragment。我认为这是你想用作容器的东西。你不应该这样做是因为你混合了两种片段方法:静态和动态。如果在XML中设置Fragment,它是静态的,无法删除,但如果只在XML中设置容器,然后使用FragmentManager在代码中实例化片段(就像你在做的那样);你是动态添加它们。
因此,再次使用RelativeLayout或FrameLayout,但不使用Fragment作为容器。并更新您的FragmentTransaction。 =)
答案 1 :(得分:0)
嘿,你肯定已经开始了,但我遇到了同样的问题,在我的情况下,按钮重叠了片段,因为它有一个高程。
Elevation仅适用于Lollipop,因为它是Lollipop中引入的Material Design的一部分。
我现在才开始玩它。
所以要回答你的问题,如果你的问题也是由于海拔升高,你可以摆脱海拔,或者给你的碎片提供更高的海拔(在片段的主要布局上设置海拔)。
我希望它有所帮助。