Android - 如何通过编程方式为LinearLayout设置Layout_Gravity?

15

我遇到了以下问题:我实现了一个HorizontalScrollView,其中在某些情况下包含一个LinearLayout和一个ImageView。在这种情况下,图像大约占屏幕宽度的50%。因此,我想将其居中。不幸的是,我找到的唯一居中的方法是在LinearLayout上使用layout_gravity="center"

这是我的xml:

<HorizontalScrollView
            android:layout_gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

        <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

        <ImageView                    
                android:src="@drawable/myImg"
                android:layout_width="wrap_content"
                android:adjustViewBounds="true"
                android:layout_height="150dp"/>

        </LinearLayout>

    </HorizontalScrollView>

但我需要通过编程来设置layout_gravity。有人知道我如何实现这个目标,或者是否还有其他方法吗?我在 Google 上找到的所有东西都对我不起作用,比如这个帖子

谢谢!


你尝试过将ImageView封装在LinearLayout中,并根据你访问的帖子中所示设置该布局的参数吗? - ClaireG
是的,我已经尝试过了...不起作用。 - Ron
3个回答

39

做一些像这样的事情:

   LayoutParams lp = new LayoutParams();
   lp.gravity= Gravity.CENTER_HORIZONTAL; 
   myImg.setLayoutParams(lp);

更新: 另一种方法是:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            params.weight = 1.0f;
            params.gravity = Gravity.CENTER;

            imageView.setLayoutParams(params);

因此,重力值才能生效,元素必须设置MATCH_WIDTH或占据其父级的整个宽度。如果不是这种情况,则它必须有100%的权重值(使其完全占据父级),只有这样设置重力才能起作用。 - somedev

8
ImageView放在FrameLayout中,代码如下:

省略了其他代码

ImageView image = new ImageView(mContext);
image.setLayoutParams(new FrameLayout.LayoutParams(width, height, gravity));

更多信息请点击此处


2
不起作用...但是,为什么我要把ImageView放在FrameLayout中,并将FrameLayout.Params放在ImageView而不是父级视图中呢? - Ron
2
第三个参数不是 gravity,而是 weight - Bruce Lee

1

我认为,这个会对你有用

FrameLayout.LayoutParams layoutParams = new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
 layoutParams1.gravity(YourGravity);
yourImage.setLayoutParams(layoutParams);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接