我想在一行按钮上方放置一个可滚动的EditText,以便文本组件填充按钮释放的所有垂直空间。事实证明这是非常困难的,尤其是因为ADT是错误的:它表明这种布局会在Eclipse中完成而不是在实际应用程序中实现!
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/view1"/>
<LinearLayout android:id="@id/view1"
android:orientation="horizontal"
android:layout_alignParentBottom="true">
<!-- buttons go here -->
</LinearLayout>
</RelativeLayout>
在此布局中,文本会延伸到全屏,如您所料,即,它位于按钮下方,但ADT图形布局工具显示它停在按钮上方。 OTOH,如果你给它一个wrap_content高度,那么它当然不会伸展。 layout_weight也没有任何帮助。
那么,有办法吗?您必须在模拟器或真实设备上测试您的答案,而不仅仅是在Eclipse中。
精确度:是什么让我觉得这不起作用,文本小部件在按钮下延伸的是底部滚动条的形状(见下图):它应该在两端都是圆形的,而不是看起来像底部延伸得更远。如果你将它底部的形状与顶部的形状进行比较(遗憾的是我无法捕捉它:它消失的速度太快),它非常明显不同。 OTOH文本小部件边界看起来像预期的那样。这非常令人困惑。也许只是Android中的一个小错误?
答案 0 :(得分:1)
试试这段代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:inputType="textMultiLine" >
<requestFocus></requestFocus>
</EditText>
<LinearLayout
android:layout_height="wrap_content"
android:id="@+id/linearLayout1"
android:layout_width="match_parent">
<Button
android:text="Button"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:layout_width="0dp"></Button>
<Button
android:text="Button"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:layout_width="0dp"></Button>
<Button
android:text="Button"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:layout_width="0dp"></Button>
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
这应该有效
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:id="@+id/view1" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button android:text="Button" android:layout_weight="1"
android:layout_height="wrap_content" android:id="@+id/button1"
android:layout_width="0dp"/>
<Button android:text="Button" android:layout_weight="1"
android:layout_height="wrap_content" android:id="@+id/button2"
android:layout_width="0dp"/>
<Button android:text="Button" android:layout_weight="1"
android:layout_height="wrap_content" android:id="@+id/button3"
android:layout_width="0dp"/>
</LinearLayout>
<EditText android:id="@+id/text1" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_above="@id/view1"
android:gravity="top"/>
</RelativeLayout>
答案 2 :(得分:0)
我用TextView和底部的Button做了同样的事情。我试着用EditText代替TextView,它对我来说很好。你可以试试这个 -
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="Add New Template"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_above="@id/add_acronym"
/>
</RelativeLayout>
这是快照 -