EditText 宽度大于其父 TableRow
Posted
技术标签:
【中文标题】EditText 宽度大于其父 TableRow【英文标题】:EditText width is larger than its parent TableRow 【发布时间】:2021-10-30 22:13:54 【问题描述】:我有几个 TableRows,每个里面都有一个 TextView 和一个 EditText。但是 EditText 不适合表格行,即使我已将其宽度设置为 match_parent。 EditText 在 TableRow 之外结束。我希望它适合 TableRow 的宽度。
这是我的意思的图像:
我怎样才能让 EditTexts 在这里结束,它是红色的?:
这是我的 xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:layout_margin="32dp"
tools:context=".activity.ConfigScreenActivity">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_
android:layout_
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TableLayout
android:layout_
android:layout_
android:stretchColumns="*">
<TableRow
android:layout_
android:layout_>
<TextView
android:id="@+id/novo_usuario_TextView"
android:layout_
android:layout_
android:layout_marginTop="10dp"
android:text="@string/novo_usuario_texto"
android:textSize="20sp" />
<EditText
android:id="@+id/novo_usuario_EditText"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_margin="5dp"
android:ems="10"
android:hint="Novo Usuário"
android:inputType="textPersonName"
android:textColorHint="@color/light_gray"
android:textSize="20sp"
tools:ignore="TextContrastCheck" />
</TableRow>
<TableRow
android:layout_
android:layout_>
<TextView
android:id="@+id/nova_senha_TextView"
android:layout_
android:layout_
android:layout_marginTop="10dp"
android:text="@string/nova_senha_texto"
android:textSize="20sp" />
<EditText
android:id="@+id/nova_senha_EditText"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_margin="5dp"
android:ems="10"
android:hint="Nova Senha"
android:inputType="textPassword"
android:textColorHint="@color/light_gray"
android:textSize="20sp"
tools:ignore="SpeakableTextPresentCheck,DuplicateSpeakableTextCheck,TextContrastCheck" />
</TableRow>
</TableLayout>
<TableLayout
android:layout_
android:layout_
android:layout_marginTop="100dp">
<TableRow
android:layout_
android:layout_>
<TextView
android:id="@+id/confirmar_senha_TextView"
android:layout_
android:layout_
android:layout_marginTop="10dp"
android:singleLine="false"
android:text="@string/confirmar_senha_texto"
android:textSize="20sp" />
<EditText
android:id="@+id/confirmar_senha_EditText"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_margin="5dp"
android:ems="10"
android:hint="Nova Senha"
android:inputType="textPersonName"
android:textColorHint="@color/light_gray"
android:textSize="20sp" />
</TableRow>
</TableLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_marginTop="100dp">
<Button
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_marginRight="20dp"
android:layout_weight="1"
android:text="@string/confirmar_button" />
<Button
android:id="@+id/cancelar_Button"
android:layout_
android:layout_
android:onClick="changeToMainScreen"
android:layout_marginLeft="20dp"
android:layout_weight="1"
android:text="@string/cancelar_button" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
【问题讨论】:
将android:layout_width="match_parent"
更改为android:layout_width="0dp"
为TableRow
它没有用。 :( EditText 仍然粘在 TableRow 之外
【参考方案1】:
您可以通过为 EditTexts 分配权重来解决此问题
试试看
<?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-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout2"
android:layout_
android:layout_
android:layout_margin="32dp"
android:orientation="vertical"
tools:context=".activity.ConfigScreenActivity">
<TableLayout
android:layout_
android:layout_
android:stretchColumns="*">
<TableRow
android:layout_
android:layout_>
<TextView
android:id="@+id/novo_usuario_TextView"
android:layout_
android:layout_
android:layout_marginTop="10dp"
android:text="@string/novo_usuario_texto"
android:textSize="20sp" />
<EditText
android:id="@+id/novo_usuario_EditText"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_margin="5dp"
android:layout_weight="1"
android:ems="10"
android:hint="Novo Usuário"
android:inputType="textPersonName"
android:textColorHint="@color/light_gray"
android:textSize="20sp"
tools:ignore="TextContrastCheck" />
</TableRow>
<TableRow
android:layout_
android:layout_>
<TextView
android:id="@+id/nova_senha_TextView"
android:layout_
android:layout_
android:layout_marginTop="10dp"
android:text="@string/nova_senha_texto"
android:textSize="20sp" />
<EditText
android:id="@+id/nova_senha_EditText"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_margin="5dp"
android:layout_weight="1"
android:ems="10"
android:hint="Nova Senha"
android:inputType="textPassword"
android:textColorHint="@color/light_gray"
android:textSize="20sp"
tools:ignore="SpeakableTextPresentCheck,DuplicateSpeakableTextCheck,TextContrastCheck" />
</TableRow>
</TableLayout>
<TableLayout
android:layout_
android:layout_
android:layout_marginTop="100dp">
<TableRow
android:layout_
android:layout_>
<TextView
android:id="@+id/confirmar_senha_TextView"
android:layout_
android:layout_
android:layout_marginTop="10dp"
android:singleLine="false"
android:text="@string/confirmar_senha_texto"
android:textSize="20sp" />
<EditText
android:id="@+id/confirmar_senha_EditText"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_margin="5dp"
android:ems="10"
android:hint="Nova Senha"
android:inputType="textPersonName"
android:textColorHint="@color/light_gray"
android:textSize="20sp" />
</TableRow>
</TableLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_marginTop="100dp">
<Button
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_marginRight="20dp"
android:layout_weight="1"
android:text="@string/confirmar_button" />
<Button
android:id="@+id/cancelar_Button"
android:layout_
android:layout_
android:layout_marginLeft="20dp"
android:layout_weight="1"
android:onClick="changeToMainScreen"
android:text="@string/cancelar_button" />
</LinearLayout>
</LinearLayout>
【讨论】:
以上是关于EditText 宽度大于其父 TableRow的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自动布局防止 UIButton 超出其父 UIView 的宽度