1

プログラマティックで動的にフラグメントレイアウト全体を構築したいと考えています。だから私はこのコードを作成しました:フラグメント内のネストされた線形レイアウトにビューを追加することはできません。

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    final View view = inflater.inflate(R.layout.empty_container, container, false); 

    final FrameLayout rootView = (FrameLayout) view.findViewById(R.id.empty_container); 

    final LinearLayout linearLayout = new LinearLayout(getActivity()); 
    linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
    linearLayout.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout.setBackgroundColor(Color.BLACK); 

    rootView.addView(linearLayout); 

    final Button button = new Button(getActivity()); 
    button.setBackgroundColor(Color.GREEN); 
    button.setText("button name"); 
    button.setLayoutParams(new LinearLayout.LayoutParams(100, 100)); 

    linearLayout.addView(button); 

    return view; 
} 

とxml:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    android:id="@+id/empty_container" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

これが正常に動作していない理由を私は把握傾けます。ボタンはまったく表示されません(ただし、線形レイアウトは表示されます - 画面全体が黒です)。ボタンのレイアウトパラメータの1つをMATCH_PARENTに設定すると突然表示されますが、100 pxに設定するとWRAP_CONTENTが表示されません。

+0

オープンのAndroidデバイスモニタ、ツリービューアを使用してDOMをチェックし、アプリケーションを実行します。ビューがDOMに追加されているかどうかを確認することができます。 –

+0

http://developer.android.com/tools/help/hierarchy-viewer.html –

+0

階層ビューアを使用しています。ボタンがツールバーの下に隠されていました。ありがとう@RussellElfenbein – tymbark

答えて

0

あなたが追加しているようです。 Androidデバイスモニタを開き、アプリを実行してツリービューアでDOMを確認します。ビューがDOMに追加されているかどうかを確認することができます。

developer.android.com/tools/help/hierarchy-viewer.html

0

ルートビューをLinearLayoutにしてみませんか?次に、ルートビューをLinearLayoutにキャストするだけで、すでに参照があるのでidで検索する必要はありません。また、この行の意図がわからない有効な値をsetGravityに入力してくださいhttp://developer.android.com/reference/android/view/Gravity.html

+0

申し訳ありませんが、 'setOrientation'は重力ではなく、' FrameLayout'の中に複数の線形レイアウトを持つ必要がある場合はどうなりますか?私は自分の問題を回避する方法がありますが、なぜこのコードが機能しないのか不思議で、ボタンの一つを 'MATCH_PARENT'に変更するとボタンが表示されるのです。編集:上記のソリューションが見つかりました... – tymbark

0

ボタンがツールバーの下に隠れていて、サイズが100px x 100pxで十分ではありませんでした。階層ビューアは、これを把握するのに役立ちました。

関連する問題