0

現在、FrameLayoutに格納されているSurfaceView(BoardViewという名前)があります。 EditTextを含むこのFrameLayout(f1)に格納されている別のLinearLayout(l1)があります。私は、私のBoardViewの中からEditTextを前面に持って来たいと思っています。これは可能ですか?私はgetParent()を使ってみました。bringChildToFront();しかしそれはうまくいかなかった。何か案は?子ビューからのFrameLayoutのビューの切り替え

public class Board extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 

    //use a frame layout so you can also display a dialog box 
    // allows more than one view to be used 
    FrameLayout f1 = new FrameLayout(this); 
    LinearLayout l1 = new LinearLayout(this); 
    EditText edit = new EditText(this); 

    l1.setOrientation(LinearLayout.VERTICAL); 
    l1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    edit.setText("Enter your name!"); 
    l1.addView(edit); 

    f1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.FILL_PARENT)); 
    f1.addView(l1); 
    f1.addView(new BoardView(this)); 

    setContentView(f1); 

    //setContentView(new BoardView(this)); 
} 

}

答えて

1

むしろ愚かに聞こえるが、l1.bringToFront()を試してみて、それが動作するかどうかを確認?またちょうど二l1追加:

f1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.FILL_PARENT)); 
    f1.addView(new BoardView(this)); 
    f1.addView(l1); 

を、編集テキストが一番上になります。

動作するかどうか教えてください。

+0

問題は、 "l1"を解決できないということです。 SurfaceViewで何かが起きたときだけllを表示したい。基本的には、ゲームが終了したら、私はこの新しいビューを表示したい。私は現在のビューを不可視にすることができると思いますよね? –

+0

ああ、それは質問です:あなたがスイッチを作っているところにコードを表示してください。 – Femi

+0

まあ、コードはかなり長いです。私はカスタムSurfaceViewを持っています - ここにコードを投稿するのに十分なスペースがありません:/あなたを見せなければならないのは何ですか?私のクラスタイトルはこのように見えます。パブリッククラスBoardViewの拡張SurfaceViewはSurfaceHolder.Callbackを実装しています{ –

関連する問題