最近拿起Android开发,我在路上遇到了障碍。我无法定位布局。屏幕截图如下:
我正在尝试在屏幕的上半部分输入另一个布局类型/列表视图,而不会破坏底部的按钮/文本框,但是。扩展此布局时。我遇到了以下问题:
当新布局的框被扩展时,原始帧的整个内容都会移位,我尝试修改:
android:layout_gravity="top">
和其他布局属性,如重量,边距,高度/宽度..这总是遇到同样的问题。
此视图的我的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>
尽管如此,我仍然坚持如何做出正确的改变&amp;任何对这个问题的回答都将不胜感激!
答案 0 :(得分:1)
目前,您的所有子视图都位于一个水平方向LinearLayout
内。正如您所遇到的那样,LinearLayout
始终按顺序排列视图。
有几种不同的方法可以实现您正在寻找的布局。我将建议使用嵌套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
水平定向;我在这里明确地包含了这个属性,以使结构更清晰。
答案 1 :(得分:0)
原因是,您的按钮和editText远离框架布局而不是靠近角落是父布局方向是水平的。
将其更改为垂直。
现在,如果您需要按钮并将editText排列在同一行,则应按照samgak的说明进行说明。
但是,我想建议如下。
如果需要,我可以为此分享代码示例。添加了垂直滚动到布局。
<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>