展开scrollview下方的button

我试图实现的布局(我认为)非常简单。

一个TextView根据里面的内容展开。 下面是两个button(确定/取消)。

我可以使button坚持到屏幕的底部,并正常工作。 但是我想在TextView的下面有这些button。 我已经尝试了很多不同的东西,但这里是我最新的布局:

<?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" > <ScrollView android:id="@+id/Scroll" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" > <TextView android:id="@+id/Text" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </ScrollView> <RelativeLayout android:id="@+id/buttons" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_below="@+id/Scroll" android:layout_above="@+id/bottom" > <LinearLayout android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="fill_parent"> <Button android:id="@+id/ButtonOK" android:layout_height="80dp" android:layout_width="fill_parent" android:text="OK" android:layout_weight="1"/> <Button android:id="@+id/ButtonCancel" android:layout_height="80dp" android:layout_width="fill_parent" android:text="Cancel" android:layout_weight="1"/> </LinearLayout> </RelativeLayout> <LinearLayout android:id="@+id/bottom" android:layout_height="0px" android:layout_width="fill_parent" android:layout_alignParentBottom="true"/> </RelativeLayout> 

在最后的空的线性布局是一个(不成功),以防止视图延伸到屏幕的底部…

在我尝试的一切中,无论是button都在屏幕的底部,或者当TextView太大时,它们会经过它。

这是我正在尝试做的一个草图: 在这里输入图像说明

Related of "展开scrollview下方的button"

目标只是要有一个可滚动的区域,占用整个页面减去底部的一些button占用的数量?

如果是这种情况,可以在外层使用LinearLayout ,并使用权重:

 <LinearLayout android:layout_height="wrap_content" orientation="vertical"...> <ScrollView android:layout_height="0dp" android:layout_weight="1" .../> <LayoutWithButtons android:layout_height="wrap_content" ..../> </LinearLayout> 

这应该是在XML中的答案

 android:fillViewport="true" 

http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/

我发现这个链接真的帮助我。

http://www.droidnova.com/layout-technique-static-elements-below-scrollview,123.html

我对键盘解决scheme有一些非常特殊的定制需求 – 要求我自己作为frameLayout中的z层元素来处理键盘的显示和拆除。 我使用该链接中的解决scheme来实现,并同时更改scrollView的大小。 滚动视图中的button从与屏幕底部齐平的位置移到与键盘顶部齐平的位置。

关键是在scrollView上有android:fillViewport =“true”。 然后以编程方式将scrollView的底部边距设置为bottom,将底部元素的顶部边距设置为-height。

这是我处理它的两个方法:

 private void setMargins_noKeyboard() { ScrollView fieldsScroller = (ScrollView)findViewById(R.id.scroll_fields_view); FrameLayout keyboardFrame = (FrameLayout)findViewById(R.id.keyboard_root); int buttonsKeyboardSize = keyboardFrame.getHeight(); MarginLayoutParams frameParams = (MarginLayoutParams)keyboardFrame.getLayoutParams(); frameParams.setMargins(0, 0, 0, 0); MarginLayoutParams scrollParams = (MarginLayoutParams)fieldsScroller.getLayoutParams(); scrollParams.setMargins(0, 0, 0, 0); keyboardFrame.setLayoutParams(frameParams); fieldsScroller.setLayoutParams(scrollParams); } private void setMargins_keyboard() { ScrollView fieldsScroller = (ScrollView)findViewById(R.id.scroll_fields_view); FrameLayout keyboardFrame = (FrameLayout)findViewById(R.id.keyboard_root); int buttonsKeyboardSize = keyboardFrame.getHeight(); MarginLayoutParams frameParams = (MarginLayoutParams)keyboardFrame.getLayoutParams(); frameParams.setMargins(0, -buttonsKeyboardSize, 0, 0); MarginLayoutParams scrollParams = (MarginLayoutParams)fieldsScroller.getLayoutParams(); scrollParams.setMargins(0, 0, 0, buttonsKeyboardSize); keyboardFrame.setLayoutParams(frameParams); fieldsScroller.setLayoutParams(scrollParams); } 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <RelativeLayout android:id="@+id/buttons" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentBottom="true" > <LinearLayout android:orientation="horizontal" android:layout_alignParentTop="true" android:layout_height="wrap_content" android:layout_width="fill_parent"> <Button android:id="@+id/ButtonOK" android:layout_height="80dp" android:layout_width="fill_parent" android:text="OK" android:layout_weight="1"/> <Button android:id="@+id/ButtonCancel" android:layout_height="80dp" android:layout_width="fill_parent" android:text="Cancel" android:layout_weight="1"/> </LinearLayout> </RelativeLayout> <ScrollView android:id="@+id/ScrollParent" android:layout_above="@id/buttons" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ScrollView android:id="@+id/Scroll" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" > <TextView android:id="@+id/Text" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </ScrollView> </RelativeLayout> 

希望能帮助到你

这个XML对我的应用程序是可以的:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/nameOfrecipe" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10sp" android:layout_marginLeft="10sp" android:layout_alignParentTop="true" android:textSize="20sp" android:text="Name of ingredients" /> <TableLayout android:id="@+id/tableOfingredients" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/nameOfrecipe" android:layout_marginTop="40sp" android:layout_marginLeft="10sp" android:layout_marginRight="10sp" > </TableLayout> <RelativeLayout android:id="@+id/l" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tableOfingredients" > <Button android:id="@+id/addDirectionsB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="Add..." /> <Button android:id="@+id/cancelDirectionsB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_toRightOf="@id/addDirectionsB" android:text="Cancel" /> <ScrollView android:id="@+id/directionsScroll" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/addDirectionsB"> <EditText android:id="@+id/directionsET" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textMultiLine" > <requestFocus /> </EditText> </ScrollView> </RelativeLayout> </RelativeLayout>