2016-04-03 12 views
0

Ich habe eine Liste von Fragmenten mit Schaltflächen und ein Fragment, das angezeigt wird, nachdem Folie Geste gemacht wird (ähnlich der Menüführung Schublade). Problem ist, dass die buttonFragments immer über meinem menuFragment stehen.Bring Fragment nach vorne in absoluteLayout

Illustration:

enter image description here

Ich versuchte View.bringToFront() Methode zu verwenden, aber es hat nicht funktioniert. Tue ich es falsch, oder sollte ich es anders machen?

Aktivität 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); 
     } 
    } 

Also, was mache ich falsch?

Oder sollte ich anderes Layout (Relative oder ein Rahmen?)

+0

Haben Sie 'DialogFragment' in Erwägung gezogen? –

+0

@Joel Min Ich kann DialogFragment nicht verwenden, da ich in der Lage sein muss, auf Schaltflächen zu klicken, die sich auf der oberen Seite des Bildschirms befinden, während das Menü angezeigt wird. –

Antwort

0

Ich habe es gelöst, indem ich jede Taste in FrameLayout eingewickelt habe.

1

Ich würde relativelayout verwenden.

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

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

Hier weil BMENU nach button_fragment platziert ist, wird es auf der button_fragment sein. Daher wird button_fragment zuerst während des Renderns aufgebläht, gefolgt von bMenu, das darauf gelegt wird (Gegenstand der Positionierung ist ein solcher).

+0

Ich erstelle mehrere button_fragments in 'for' cycle, aber in Ihrem Beispiel verwenden Sie nur eins in xml. Wird es noch funktionieren? –

+0

Grundidee ist die gleiche, Sie fügen Ihre Fragmente nach dem Hintergrund Fragment wird gerendert. Fügen Sie also Ihre button_fragments zuerst programmgesteuert hinzu und fügen Sie dann Ihr bMenu-Fragment programmgesteuert hinzu. Fügen Sie beide nicht in Ihr Layout ein. Sie müssen Position und Höhe und Breite im Java-Code – suku

+0

genau das einstellen, was ich gerade mache, der einzige Unterschied ist, dass ich absolutes Layout verwende. Bedeutet das, dass das absolute Layout diese Funktion nicht hat, oder mache ich etwas falsch? –