Android 以编程方式将视图添加到具有重力和重量的LinearLayout
我已经用xml生成了LinearLayout,这个:Android 以编程方式将视图添加到具有重力和重量的LinearLayout,android,android-layout,Android,Android Layout,我已经用xml生成了LinearLayout,这个: <LinearLayout android:id="@+id/available_themes_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="c
<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"/>
但在最后,我实现了只应用权重,并且我的视图与左侧对齐。想一想,如果不设定重量,重力效果会很好
有人能告诉我解决这个问题的方法吗
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);
试试这个。当使用
weight
s时,确保适当的width
或height
被设置为0dp
。在将视图添加到布局后,你试过设置重力吗?@Nerd,试过了,宽度是因为方向是水平的。@akash93,刚试过,没有变化,重力是不适用的。这里给出了几种方法:为什么要用null而不是上下文创建视图?这将抛出NPE。这也不管用(
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);