2016-04-03 55 views
0

我有一個包含按鈕和一個片段的片段列表,該片段在製作完滑動手勢(類似於菜單導航抽屜)後顯示出來。問題是,buttonFragments總是停留在我的menuFragment之上。在絕對佈局中將片段置於前面

插圖:

enter image description here

我試圖用View.bringToFront()方法,但它沒有工作。我做錯了,還是應該以不同的方式去做?

活動EditKeyboard.java:

public class EditKeyboard extends AppCompatActivity{ 

     ArrayList<Fragment> keyFragments; // buttons 
     Fragment bMenu; // menu 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_edit_keyboard); 

      createButtons(); 
      createBMenu(); 
     } 


     public void createBMenu(){ 
      bMenu = ButtonMenuFragment.newInstance("a", "a"); 
      getFragmentManager().beginTransaction().add(R.id.edit_keyboard_layout, 
        bMenu, "bMenu").commit(); 
      View v = bMenu.getView(); 
      v.bringToFront(); // TODO bring menu to top 
      ((View) v.getParent()).requestLayout(); 
      ((View) v.getParent()).invalidate(); 
      getFragmentManager().popBackStackImmediate("TAG", FragmentManager.POP_BACK_STACK_INCLUSIVE); 
     } 
    } 

那我做錯了嗎?

或者我應該使用不同的佈局(相對或框架中的一個?)

+0

你有沒有考慮過'DialogFragment'? –

+0

@Joel Min我不能使用DialogFragment,因爲我需要能夠點擊屏幕頂部的按鈕,而菜單顯示。 –

回答

0

我已經通過將每個按鈕包裝到FrameLayout中解決了它。

1

我會用RelativeLayout的。

<RelativeLayout> 
    ... 
    <fragment 
     android:name= "packagename.button_fragment" 
     ...width, height, id, postion... /> 

    <fragment 
     android:name= "packagename.bMenu" 
     ...width, height, id, postion... /> 

這裏,因爲bMenu放置button_fragment後,這將是button_fragment的頂部。因此,button_fragment首先被渲染,然後渲染,然後bMenu將其放在頂部(定位的主題是這樣)。

+0

我在'for'循環中創建了多個button_fragments,但在您的示例中,您只能在xml中使用一個。它會繼續工作嗎? –

+0

基本想法是一樣的,你在渲染背景片段後添加你的片段。因此,首先以編程方式添加您的button_fragments,然後以編程方式添加您的bMenu片段。那麼不要在你的佈局中包括這兩個。您將不得不在Java代碼 – suku

+0

中設置位置和高度和寬度,這正是我現在正在做的,唯一不同的是,我使用絕對佈局。這是否意味着,絕對佈局沒有這個功能,或者我做錯了什麼? –