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
中。 LinearLayout
s 总是按顺序排列视图,如您所见。
有几种不同的方法可以实现您正在寻找的布局。我打算推荐一个使用嵌套 LinearLayout
s 的方法(一个外部的用来垂直堆叠东西,然后一个嵌套的用来水平排列 EditText
和 Button
),但是你可以还可以考虑为此使用 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 答案中的描述提及。
不过,我想提出以下建议。
- 在 android 中使用框架布局可能会在不同屏幕尺寸上造成糟糕的用户体验。
- 如果父布局是线性的,如果屏幕尺寸是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>
最近在进行 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
中。 LinearLayout
s 总是按顺序排列视图,如您所见。
有几种不同的方法可以实现您正在寻找的布局。我打算推荐一个使用嵌套 LinearLayout
s 的方法(一个外部的用来垂直堆叠东西,然后一个嵌套的用来水平排列 EditText
和 Button
),但是你可以还可以考虑为此使用 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 答案中的描述提及。
不过,我想提出以下建议。
- 在 android 中使用框架布局可能会在不同屏幕尺寸上造成糟糕的用户体验。
- 如果父布局是线性的,如果屏幕尺寸是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>