-1

I am having some issues with my layout. Basically I have two modes. Normal and Error. In normal mode I want to show the variable_one and variable_two linear layouts. In the error state I only want to show variable_one but centered in the main layout. The room name text must always remain in the same spot.

In the fragment code to set the visibility of variable_two I set the layout visibility to GONE

My layout is

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.priceelectronics.pci"
    android:id="@+id/label_and_text_value_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <me.grantland.widget.AutofitTextView
            android:id="@+id/roomname"
            style="@style/SingleRoomNameStyle"
            android:layout_height="wrap_content"/>

        <LinearLayout
            android:id="@+id/variable_one"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView android:id="@+id/label"
                android:layout_width="wrap_content"
                android:layout_height="46px"
                android:textColor="#CFFFFFFF"
                android:textStyle="normal"
                android:textSize="25sp"
                android:text="@string/Name"
                android:layout_gravity="center"
                android:gravity="center"/>

            <me.grantland.widget.AutofitTextView
                android:id="@+id/value"
                android:layout_width="wrap_content"
                android:layout_height="101px"
                android:paddingLeft="48dp"
                android:paddingRight="48dp"
                android:layout_gravity="center"
                android:gravity="center"
                android:minWidth="200dp"
                android:text="0.0000"
                android:textColor="#FFFFFF"
                android:textSize="55dp"
                android:textStyle="bold"
                android:maxLines="2"
                app:sizeToFit="true"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/variable_two"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <Space
                android:id="@+id/spacer"
                android:layout_width="match_parent"
                android:layout_height="30dp" />

            <TextView android:id="@+id/label_two"
                android:layout_width="wrap_content"
                android:layout_height="46px"
                android:textColor="#CFFFFFFF"
                android:textStyle="normal"
                android:textSize="25sp"
                android:text="@string/Name"
                android:layout_gravity="center"
                android:gravity="center"/>

            <me.grantland.widget.AutofitTextView
                android:id="@+id/value_two"
                android:layout_width="wrap_content"
                android:layout_height="189px"
                android:paddingLeft="48dp"
                android:paddingRight="48dp"
                android:layout_gravity="center"
                android:gravity="top|center_horizontal"
                android:minWidth="200dp"
                android:text="0.0000"
                android:textColor="#FFFFFF"
                android:textSize="55dp"
                android:textStyle="bold"
                android:maxLines="2"
                app:sizeToFit="true"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

Both variable_one and variable_two are set to wrap content. Is there a simple way to set variable_two as GONE and force variable_one to expand and center?

Michael
  • 399
  • 2
  • 17
  • Does this answer your question? [How to set layout\_weight attribute dynamically from code?](https://stackoverflow.com/questions/4641072/how-to-set-layout-weight-attribute-dynamically-from-code) – javdromero Jun 30 '21 at 13:51
  • `android:gravity="center"`? – Darkman Jun 30 '21 at 14:09
  • the two layout look basically the same. If layout *variable_one* is not that different from layout *variable_two*. you could just use one LinearLayout and make the views that are not relevant empty, invisible : btn1.setVisibility(View.GONE); btn1.setVisibility(View.INVISIBLE); – Guy West Jun 30 '21 at 14:14

1 Answers1

0

You don't need android:layout_weight nor android:layout_gravity. You just need to set android:gravity correctly. Use a android:gravity to specify the inner child's gravity.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.priceelectronics.pci"

    android:id="@+id/label_and_text_value_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

        <me.grantland.widget.AutofitTextView
            android:id="@+id/roomname"
            style="@style/SingleRoomNameStyle"
            android:layout_height="wrap_content"/>

        <LinearLayout
            android:id="@+id/variable_one"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">

            <TextView android:id="@+id/label"
                android:layout_width="wrap_content"
                android:layout_height="46px"
                android:textColor="#CFFFFFFF"
                android:textStyle="normal"
                android:textSize="25sp"
                android:text="@string/Name"
                android:gravity="center"/>

            <me.grantland.widget.AutofitTextView
                android:id="@+id/value"
                android:layout_width="wrap_content"
                android:layout_height="101px"
                android:paddingLeft="48dp"
                android:paddingRight="48dp"
                android:gravity="center"
                android:minWidth="200dp"
                android:text="0.0000"
                android:textColor="#FFFFFF"
                android:textSize="55dp"
                android:textStyle="bold"
                android:maxLines="2"
                app:sizeToFit="true"/>

        </LinearLayout>

        <LinearLayout
            android:id="@+id/variable_two"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">

            <Space
                android:id="@+id/spacer"
                android:layout_width="match_parent"
                android:layout_height="30dp" />

            <TextView android:id="@+id/label_two"
                android:layout_width="wrap_content"
                android:layout_height="46px"
                android:textColor="#CFFFFFFF"
                android:textStyle="normal"
                android:textSize="25sp"
                android:text="@string/Name"
                android:gravity="center"/>

            <me.grantland.widget.AutofitTextView
                android:id="@+id/value_two"
                android:layout_width="wrap_content"
                android:layout_height="189px"
                android:paddingLeft="48dp"
                android:paddingRight="48dp"
                android:gravity="top|center_horizontal"
                android:minWidth="200dp"
                android:text="0.0000"
                android:textColor="#FFFFFF"
                android:textSize="55dp"
                android:textStyle="bold"
                android:maxLines="2"
                app:sizeToFit="true"/>

        </LinearLayout>

</LinearLayout>
Darkman
  • 2,941
  • 2
  • 9
  • 14