2012-04-02 8 views
2

LinearLayout(子ビュー)を別のLinearLayout(親ビュー)にプログラムで追加しています。ここでは子ビューの位置をcenter_horizo​​ntalに設定します。どうやってするか?誰か助けてください。アンドロイド - プログラムで線形レイアウトの表示位置を固定する方法

code 

LinearLayout linearLayoutstate = new LinearLayout(this); 

linearLayoutstate.setOrientation(LinearLayout.HORIZONTAL); 

TextView stateTitletv = new TextView(this); 

stateTitletv.setText("tv1"); 

TextView state_valuetv = new TextView(this);  

state_valuetv.setText("tv2");  

linearLayoutstate.addView(stateTitletv); 

linearLayoutstate.addView(state_valuetv); 

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT,Gravity.CENTER_HORIZONTAL); 

LL_SelectedFilters.addView(linearLayoutstate,layoutParams); 
+0

あなたの子供のレイアウトはfill_parentの幅を持っているので、水平の整列はあまり効果がありません。 wrap_contentで試してみてください。 – jakk

答えて

1

これにマイナーチェンジを使用してください:::

LinearLayout linearLayoutstate = new LinearLayout(this); 

    linearLayoutstate.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayoutstate.setGravity(Gravity.CENTER_HORIZONTAL); 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); 

    TextView stateTitletv = new TextView(this); 

    stateTitletv.setText("tv1"); 

    TextView state_valuetv = new TextView(this); 

    state_valuetv.setText("tv2"); 

    linearLayoutstate.addView(stateTitletv); 

    linearLayoutstate.addView(state_valuetv); 

    LL_SelectedFilters.addView(linearLayoutstate,layoutParams); 
+0

子ビューで 'setGravity()'を実行しますが、このメソッドはこの子ビューの子にのみ重力を適用します( 'linearLayoutstate'):http://developer.android.com/reference/android/widget/LinearLayout .html#setGravity%28int%29 –

+0

あなたは何を設定したいのか、それともLL_SelectedFilters.setGravity(Gravity.CENTER_HORIZONTAL)として設定したいのですか? –

+0

これはもっと似ていますが、親レイアウトのすべての子ビューに影響を与えるという欠点があります。 –

0

あなたの問題への鍵は、あなたの子ビューのLinearLayout.LayoutParamsgravity分野に存在する:私はこの問題を考える

LinearLayout.LayoutParams lllp=(LinearLayout.LayoutParams)linearLayoutstate.getLayoutParams(); 

lllp.gravity=Gravity.CENTER_HORIZONTAL; 
linearLayoutstate.setLayoutParams(lllp); 

LL_SelectedFilters.addView(linearLayoutstate); 
関連する問題