Как я могу сделать так, чтобы все дочерние представления имели одинаковую длину в макете таблицы?

#android #tablelayout

#Android #tablelayout

Вопрос:

  1. Я использовал android: stretchColumns = «*», чтобы все дочерние элементы таблицы имели одинаковую ширину. Однако длина дочернего представления зависит от длины текста. Как вы можете сделать так, чтобы дочерние представления имели одинаковый размер?
  2. Я добавил кнопку в конце макета таблицы. Я хочу, чтобы изображение этой кнопки имело ту же высоту, что и соседние текстовые представления, сохраняя при этом соотношение сторон. Что мне делать?
     <TableRow android:layout_weight="1">
    
        <EditText
            android:id="@ id/ET1"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="0"
            android:textColor="#000000" />            
    
        <EditText
            android:id="@ id/ET2"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="00"
            android:textColor="#000000" />            
    
        <EditText
            android:id="@ id/ET3"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="0000"
            android:textColor="#000000" />            
    
        <EditText
            android:id="@ id/ET4"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="00000000"
            android:textColor="#000000" />
    
        <Button
            android:id="@ id/btSET"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:scaleType="centerInside"
            android:background="@drawable/ui_2_setbtn"/>
    
    </TableRow>
     

введите описание изображения здесь

Ответ №1:

Сделайте это так:

Предполагается @drawable/ui_2_setbtn , что это векторный ресурс…

     <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="1">

        <EditText
            android:id="@ id/ET1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:layout_gravity="center"
            android:text="0"
            android:textColor="#000000" />

        <EditText
            android:id="@ id/ET2"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_weight="1"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="00"
            android:layout_gravity="center"
            android:textColor="#000000" />

        <EditText
            android:id="@ id/ET3"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="0000"
            android:textColor="#000000" />

        <EditText
            android:id="@ id/ET4"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="00000000"
            android:textColor="#000000" />

        <ImageButton
            android:id="@ id/btSET"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_gravity="center"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            app:srcCompat="@drawable/ui_2_setbtn"  // or android:src="...", depends if you are using VectorDrawableCompat or not
            android:background="@color/green_dark" /> // only to if you want to make button looks same size as EditText

    </TableRow>
 

ImageButton (а также кнопка) имеет небольшой запас, определенный в его стиле. Вот почему он выглядит немного меньше, чем EditText. Чтобы изменить это, создайте пользовательский стиль для своей кнопки или, как в моем примере, задайте цвет фона.

Ответ №2:

Проверьте это.

Все они будут иметь одинаковую длину в одной строке.

 <TableRow android:layout_weight="1">

        <EditText
            android:id="@ id/ET1"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="0"
            android:layout_weight="0.2"
            android:textColor="#000000" />

        <EditText
            android:id="@ id/ET2"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="00"
            android:layout_weight="0.2"
            android:textColor="#000000" />

        <EditText
            android:id="@ id/ET3"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="0000"
            android:layout_weight="0.2"
            android:textColor="#000000" />

        <EditText
            android:id="@ id/ET4"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:gravity="center"
            android:text="00000000"
            android:layout_weight="0.2"
            android:textColor="#000000" />

        <Button
            android:id="@ id/btSET"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:scaleType="centerInside"
            android:layout_weight="0.2"
            android:background="@drawable/rounded"/>

    </TableRow>
 

Пожалуйста, дайте мне знать, помогло ли это.