以编程方式将具有重力和权重的视图添加到线性布局



我在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);

但最后我实现了只应用权重并且我的观点与左侧对齐。想,如果不设置重量 - 重力效果很好。

有人可以指出我解决这个问题的方法吗?

        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);

试试这个。

最新更新