Android:水平线性布局未按预期布局元素

Android:水平线性布局未按预期布局元素,android,android-layout,android-linearlayout,Android,Android Layout,Android Linearlayout,我创建了一个包含EditText和按钮的水平线性布局。按钮应尽可能窄,编辑文本应占据整个剩余空间。 就像这样: 我写这段代码: <LinearLayout android:id="@+id/textInputLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <

我创建了一个包含EditText和按钮的水平线性布局。按钮应尽可能窄,编辑文本应占据整个剩余空间。 就像这样:

我写这段代码:

<LinearLayout
    android:id="@+id/textInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <EditText
        android:id="@+id/editTextToSpeak"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:ems="10"
        android:hint="@string/text_to_speak"
        android:inputType="text" />

    <Button
        android:id="@+id/saveCard"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/save_card" />
</LinearLayout>

我得到这张照片:

按钮根本不可见,编辑文本的高度增加了一倍


如何使这些元素看起来像第一张图片?

您可以在编辑文本中使用
android:layout\u weight=“1”
android:layout\u width=“0dp”
轻松归档这些元素,因此它将占用除按钮区域之外的其余空间

<LinearLayout
    android:id = "@+id/textInputLayout"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:orientation = "horizontal">

    <EditText
        android:layout_weight="1"
        android:id="@+id/editTextToSpeak"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:ems="10"
        android:hint="@string/text_to_speak"
        android:inputType="text" />

    <Button
        android:id="@+id/saveCard"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/save_card" />
</LinearLayout>


希望有帮助:)

使用android:weightSum和android:weight。它将使您能够固定垂直或水平的大小

<LinearLayout
android:id = "@ + id/textInputLayout"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:orientation = "horizontal"
android:weightSum="3">

<EditText
    android:id = "@+id/editTextToSpeak"
    android:layout_width ="match_parent"
    android:layout_height = "match_parent"
    android:ems = "10"
    android:hint = "@string/text_to_speak"
    android:inputType = "text"
     />

<Button
    android:id = "@+id/saveCard"
    android:layout_width = "wrap_content"
    android:layout_height = "match_parent"
    android:text = "@ string/save_card" 
    android:layout_weight="1"/>

您也可以在android中使用相对布局来实现

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout android:layout_height="wrap_content"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

     <EditText
        android:id="@+id/editTextToSpeak"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="@string/text_to_speak"
        android:inputType="text"
        android:layout_toStartOf="@+id/saveCard"/>

     <Button
       android:id="@+id/saveCard"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/save_card"
       android:layout_alignParentEnd="true"/>
</RelativeLayout>

我希望这会有帮助。)