Android Studio 的布局问题

Layout issue with Android Studio

最近在进行 android 开发,但在路上遇到了障碍。我在定位布局时遇到问题。截图如下:

我正在尝试在屏幕上部输入另一个布局 type/list 视图,但不会破坏底部的 button/text 框。扩展此布局时。我遇到了以下障碍:

新布局的框扩展时原框的全部内容移位,我试过修改:

android:layout_gravity="top">

和其他布局属性,如重量、边距、height/width。这总是会遇到同样的问题。

我对此观点的 XML 是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="483dp"
        android:layout_weight="1.06"
        android:layout_gravity="top">

        </FrameLayout>

    <EditText android:id="@+id/edit_message"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:hint="@string/edit_message"
        android:layout_gravity="bottom" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send"
        android:layout_gravity="bottom"
        android:onClick="SendMessageButton"

        />

</LinearLayout>

不过,我 some-what 一直在思考如何进行正确的更改,对此问题的任何答复都将不胜感激!

目前,您所有的子视图都位于一个水平方向的 LinearLayout 中。 LinearLayouts 总是按顺序排列视图,如您所见。

有几种不同的方法可以实现您正在寻找的布局。我打算推荐一个使用嵌套 LinearLayouts 的方法(一个外部的用来垂直堆叠东西,然后一个嵌套的用来水平排列 EditTextButton),但是你可以还可以考虑为此使用 RelativeLayout

更新的布局:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/edit_message"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/edit_message" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_send"
            android:onClick="SendMessageButton" />

    </LinearLayout>

</LinearLayout>

请注意,LinearLayout 默认为水平方向;为了让结构更清晰,我在这里明确包含了属性。

您的按钮和 editText 出现在远离框架布局而不靠近角落的原因是父布局方向是水平的。

将其更改为垂直。

现在,如果您需要将按钮和 editText 排列在同一行,则应按照 samgak 答案中的描述提及。

不过,我想提出以下建议。

  1. 在 android 中使用框架布局可能会在不同屏幕尺寸上造成糟糕的用户体验。
  2. 如果父布局是线性的,如果屏幕尺寸是x,你添加的所有组件,如果它占用的高度是x-20,那么你为父布局设置的主题不会覆盖整个屏幕。因此,建议使用RelativeLayout,对于button和editText,使用layout_alignParentBottom = true属性。

如果需要,我可以分享代码示例。在布局中添加了垂直滚动。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="483dp"

        android:layout_gravity="top">

        </FrameLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
       <EditText android:id="@+id/edit_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:hint="Edit Message"
        android:layout_gravity="bottom" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send"
        android:layout_gravity="bottom"
        android:onClick="SendMessageButton"

        />
</LinearLayout>
</LinearLayout>
</ScrollView>