2017-01-12 26 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