2017-01-12 3 views
1

私はのLinearLayoutはXMLで生成されてい双方とのLinearLayoutにビューを追加し、この1:プログラムで、重力と体重

<LinearLayout 
     android:id="@+id/available_themes_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="center" 
     android:paddingTop="6dp" 
     android:paddingBottom="6dp"/> 

私は、このレイアウトにいくつかのカスタムビューを追加し、レイアウトに沿って均等に配置しようとしている:

BiColorCircleView lightOrangeCircleView = new BiColorCircleView(getCurrentActivity()); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       1.0f); 
params.gravity = Gravity.CENTER; 
lightOrangeCircleView.setLayoutParams(params); 
availableThemesLayout.addView(lightOrangeCircleView); 

最終的には、私は体重だけが適用され、私の意見は左側に整列することを達成します。思考は、重量が設定されていない場合 - 重力は良い作品。

誰かがこの問題を解決する方法を教えてもらえますか?

+0

'weight'sを使用する場合は、適切な' width'または 'height'が' 0dp'として設定されていることを確認してください。 – Nerd

+0

ビューにレイアウトを追加した後で重力を設定しましたか? – akash93

+0

@Nerd、方向を水平にしているので幅で試してみました。 – Levor

答えて

0
 LinearLayout availableThemesLayout = new LinearLayout(null); 
     ImageView lightOrangeCircleView = new ImageView(null); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       0, 
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       1.0f); 
     FrameLayout frameLayout = new FrameLayout(null); 
     availableThemesLayout.addView(frameLayout, params); 

     FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(
       FrameLayout.LayoutParams.WRAP_CONTENT, 
       FrameLayout.LayoutParams.WRAP_CONTENT); 
     frameParams.gravity = Gravity.CENTER; 
     frameLayout.addView(lightOrangeCircleView, params); 

これを試してください。

+0

なぜコンテキストの代わりにヌルでビューを作成するのですか?これはNPEを投げます。 これも機能しません – Levor