Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to make a child of linearLayout align to parents right programmatically?

I have a linearLayout_child inside another linearLayout_parent.

I want to make linearLayout_child aligned to parent's right.

How can I do this?

what if I want all linearLayout_parent's children be aligned to their parent's right?

I want to do them both programmatically.

update

is there any tool with which I can see the current layout properties and attributes in my Activity's view? The code changes many attributes from the original XMl and it's hard to follow at a specific situation.

here is my xml:

        <MyTextView
            android:id="@+id/navBarDistance"
            style="@style/NavBarDistance"
            android:textSize="19dp"
            android:text="miles"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

        <MyTextView
            android:id="@+id/navBarDistanceUnit"
            style="@style/NavBarDistUnit"
            android:textSize="19dp"
            android:text="0.1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="3dp" 
            />
    </LinearLayout>
        <LinearLayout
            android:id="@+id/navBarDistanceLayoutRtl"
            android:layout_width="70dp"
            android:layout_height="match_parent"
            android:layout_marginRight="8dp"
            android:layout_marginTop="5dp"
            android:gravity="center_vertical|right"
            android:orientation="horizontal"
            android:visibility="gone">

            <MyTextViewType
                android:id="@+id/navBarDistanceUnitRtl"
                style="@style/NavBarDistUnit"
                android:textSize="19dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="3dp"
                />

            <MyTextViewType
                android:id="@+id/navBarDistanceRtl"
                style="@style/NavBarDistance"
                android:textSize="19dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                />
        </LinearLayout>
</LinearLayout>

and here is parts of the code:

the change to AlerterMode and then coming back to non-alrter more makes navBarDistanceLayoutRtl be aligned to left instead of right

            if (bIsAlertMode)
            {

...
                if (rtlMode)
                {
                    width = view.findViewById(R.id.navBarDistanceLayoutRtl).getWidth();
                    android.widget.LinearLayout.LayoutParams DistanceBar = new LinearLayout.LayoutParams(width, android.widget.LinearLayout.LayoutParams.MATCH_PARENT);
                    DistanceBar.setMargins(3, 20, 3, 0);
                    view.findViewById(R.id.navBarDistanceLayoutRtl).setLayoutParams(DistanceBar);
                }
                else
                {
                    width = view.findViewById(R.id.navBarDistanceLayout).getWidth();
                    android.widget.LinearLayout.LayoutParams DistanceBar = new LinearLayout.LayoutParams(width, android.widget.LinearLayout.LayoutParams.MATCH_PARENT);
                    DistanceBar.setMargins(3, 20, 3, 0);
                    view.findViewById(R.id.navBarDistanceLayout).setLayoutParams(DistanceBar);

                }

...

            }
            else
            {
   ...

                if (rtlMode)
                {
                    width = view.findViewById(R.id.navBarDistanceLayoutRtl).getWidth();
                    android.widget.LinearLayout.LayoutParams DistanceBar = new LinearLayout.LayoutParams(width, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
                    DistanceBar.setMargins(20, 8, 3, 0);

                    DistanceBar.gravity = RelativeLayout.ALIGN_PARENT_RIGHT;

                    view.findViewById(R.id.navBarDistanceLayoutRtl).setLayoutParams(DistanceBar);

                    view.findViewById(R.id.navBarDistanceLayoutRtl).setVisibility(View.VISIBLE);
                    view.findViewById(R.id.navBarDistanceLayout).setVisibility(View.GONE);
                    distance = (TextView)view.findViewById(R.id.navBarDistanceRtl);
                    distanceUnit = (TextView)view.findViewById(R.id.navBarDistanceUnitRtl);
                }
                else
                {
                    width = view.findViewById(R.id.navBarDistanceLayout).getWidth();
                    android.widget.LinearLayout.LayoutParams DistanceBar = new LinearLayout.LayoutParams(width, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
                    DistanceBar.setMargins(0, 8, 3, 0);
                    view.findViewById(R.id.navBarDistanceLayout).setLayoutParams(DistanceBar);

                    DistanceBar.gravity = RelativeLayout.ALIGN_PARENT_LEFT;

                    view.findViewById(R.id.navBarDistanceLayoutRtl).setVisibility(View.GONE);
                    view.findViewById(R.id.navBarDistanceLayout).setVisibility(View.VISIBLE);
                    distance = (TextView)view.findViewById(R.id.navBarDistance);
                    distanceUnit = (TextView)view.findViewById(R.id.navBarDistanceUnit);

                }

                ...
            }
        }
like image 387
Elad Benda Avatar asked Nov 19 '25 11:11

Elad Benda


1 Answers

Try to set gravity like this..

        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT);

    layoutParams.gravity = RelativeLayout.ALIGN_PARENT_RIGHT;

    linearlayout.setLayoutParams(layoutParams);
like image 174
kalyan pvs Avatar answered Nov 21 '25 02:11

kalyan pvs



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!