Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - Set Layout_Gravity programmatically for LinearLayout

I've got the following problem: I implemented a HorizontalScrollView which contains in one case a LinearLayout and an ImageView. In this case the image is about 50% of the screen width. So I want to center it. Unfortunately the only way I found to center it is, to use layout_gravity="center" on the LinearLayout.

Here's my 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>

But I need to set the layout_gravity programmatically. Does anybody has an idea how I can achieve this or knows a different way? All the things I found via Google are not working for me like this post.

Thanks!

like image 431
Ron Avatar asked Jul 31 '13 08:07

Ron


People also ask

How to set Linear Layout Gravity programmatically?

// here messageLL is the linear layout in the xml file // Before adding any view just remove all views messageLL. removeAllViews(); // FrameLayout is the parent for LinearLayout FrameLayout. LayoutParams params = new FrameLayout. LayoutParams(ViewGroup.

What is difference between gravity and Layout_gravity?

So in general android:layout_gravity attribute is used by child views to tell their parent how they want to be placed inside it, while android:gravity is used by the parent layout to tell the child views how they should be placed inside it.

What is LayoutParams in Android?

LayoutParams are used by views to tell their parents how they want to be laid out.


3 Answers

Do somethings like this :

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

UPDATE : Another way to do this :

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

            imageView.setLayoutParams(params);
like image 187
Vipul Purohit Avatar answered Oct 23 '22 16:10

Vipul Purohit


Put the ImageView in a FrameLayout like this:

Removed extra code

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

More info here.

like image 28
ClaireG Avatar answered Oct 23 '22 15:10

ClaireG


I think , this one will work for you

FrameLayout.LayoutParams layoutParams = new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
 layoutParams1.gravity(YourGravity);
yourImage.setLayoutParams(layoutParams);
like image 1
Mohamed Abd Al-Mohsen Avatar answered Oct 23 '22 15:10

Mohamed Abd Al-Mohsen