2016-04-03 10 views
0

スライドジェスチャーが行われた後に表示されるボタンとフラグメントを含むフラグメントのリストが表示されます(メニューナビゲーションドロワーに似ています)。問題は、buttonFragmentsが常に私のmenuFragmentの上にとどまっていることです。absoluteLayout内でフラグメントを前方に移動

イラスト:

enter image description here

私はView.bringToFront()メソッドを使用しようとしましたが、それは仕事をdidntの。私はそれを間違ってやっているのですか、それとも別のやり方ですべきですか?

活動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); 
     } 
    } 

は、だから私は間違って何をやっていますか?

または私は(相対またはフレーム1?)別のレイアウトを使用する必要があります

+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に1つしか使用しません。それはまだ動作しますか? –

+0

基本的なアイデアは同じです。バックグラウンド・フラグメントがレンダリングされた後にフラグメントを追加します。最初にプログラムでbutton_fragmentsを追加して、bMenuフラグメントをプログラムで追加します。あなたのレイアウトには両方を含めないでください。 Javaコード – suku

+0

で位置と高さと幅を設定する必要があります。これはまさに私が今やっていることです。違いは、絶対レイアウトを使用することだけです。つまり、絶対レイアウトにはこの機能がないのですか、何か間違っていますか? –

関連する問題