2015-02-08 46 views
0

我想從Activity調用簡單的Fragment。它在預棒棒糖上工作正常。但是在棒棒糖設備上,活動佈局的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佈局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(); 
} 

<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> 

enter image description here

+0

你解決了嗎? – 2015-12-10 08:45:35

回答

0

你需要在你的RelativeLayout主要有一個片段容器。

對於您的片段容器,請使用RelativeLayout或FrameLayout。

在您的XML中,將碎片容器放在主佈局中,並放在Button和TextView之後。原因在於,當小部件佔據相同的空間時(就像在你的情況下你的按鈕和片段容器一樣),最後出現在你的XML文件中的是最後一個。

你不應該使用你的主佈局作爲片段容器。

編輯:一旦你已經改變了XML文件(使用一個的RelativeLayout或FrameLayout裏的容器),你需要更新你的FragmentTransaction使用此容器:

​​

而且我可以在你的代碼中看到你在你的XML文件中創建了一個Fragment。我認爲這是你想用作容器的東西。你不應該這樣做,因爲你正在混合兩種片段的方法:靜態和動態。如果你在你的XML中設置Fragment,它是靜態的並且不能被刪除,但是如果你只在你的XML中設置了一個容器,然後使用FragmentManager在代碼中實例化片段(就像你在做的那樣)。你正在動態添加它們。

因此再次使用RelativeLayout或FrameLayout,但不使用Fragment作爲容器。並更新您的FragmentTransaction。 =)

+0

感謝您的時間。但它沒有解決問題。我更新了我的代碼。請看一下。我只在棒棒糖中遇到這個問題。 – Bedant 2015-02-08 10:52:02

+0

你沒有改變你的FragmentTransaction代碼。您仍然在使用主佈局作爲容器。看到我編輯的答案。 – JDenais 2015-02-08 22:30:16

+0

我已根據您的建議更新了代碼,但仍遇到同樣的問題。請看一下。 – Bedant 2015-02-09 06:51:51

0

嘿,你已經移動了,但我只是有同樣的問題,在我的情況下,按鈕重疊的片段,因爲它有一個立面。

海拔僅適用於棒棒糖,因爲它是棒棒糖中引入的材料設計的一部分。

我現在就開始玩了。所以要回答你的問題,如果你的問題也是由於海拔,你可以擺脫海拔,或給你的片段提供更高的海拔高度(設置片段主佈局的海拔高度)。

我希望它有幫助。

+0

那麼,它有幫助,還是其他的東西? – JDenais 2015-03-16 02:07:08