2017-01-12 59 views
1

我的LinearLayout在XML中產生的,這一個:編程添加視圖的LinearLayout與重力和體重

<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'時,確保將相應的'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

)爲什麼你用null創建視圖而不是上下文?這會拋出NPE。 而這也不起作用( – Levor