我有一个editText字段,一个scroolView字段,其中有linearLayout字段,其中有许多以编程方式生成的元素,然后我想添加静态线性布局字段(广告),这将显示在屏幕的尽头。问题是我的scrollView占用了屏幕上的所有空间,因此linearLayout及其内容不会显示出来。此外,我必须确保如果广告被隐藏(以编程方式),则scrollView将占用屏幕上的所有可用空间。为了更好地说明这一点,这里是xml代码:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp"
xmlns:android="http://schemas.android.com/apk/res/android">
// first field: editText - everythings good here
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/etInput"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:hint="@string/hint" />
// second field: scrollView. It chews up a lot of space (height wise) since linearLayout is huge.
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView"
android:layout_below="@+id/etInput"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<LinearLayout
android:orientation="vertical"
android:id="@+id/lLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/scrollView"
android:layout_toRightOf="@+id/scrollView" />
</ScrollView>
// third field (advert): linearLayout. I want this to be added at the bottom of the screen.
<LinearLayout
android:orientation="vertical"
android:id="@+id/advert"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/scrollView"
android:layout_toRightOf="@+id/scrollView">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:0)
到ScrollView添加
layoutAbove="@+id/advert"
修改强>
循环依赖,因为您在广告中引用了滚动视图 您只需在屏幕底部刊登广告。
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/etInput"
android:layout_above="@+id/advert">
<LinearLayout
android:id="@+id/lLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
// third field (advert): linearLayout. I want this to be added at the bottom of the screen.
<LinearLayout
android:id="@+id/advert"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="New Text" />
</LinearLayout>
如果要删除广告,请将展示次数设置为invisible
,以便不删除该视图,并且滚动视图始终位于广告之上
答案 1 :(得分:0)
您可以以编程方式使用边距
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
//when you want to show linearlayout
params.bottomMargin = the height of linear layout;
//when you don't
params.bottomMargin = 0;
scrollVIew.setlayoutparams(params);
或只使用ListView并将linearlayout设置为列表的FooterView
答案 2 :(得分:0)
你搞砸了一些东西。
当你有一个固定的块时,你应该首先放置那个块并将其他所有相关的位置放置。
所以这是未经测试但可能有效:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- I am at the BOTTOM! -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_alignParentBottom="true"
android:layout_gravity="center_horizontal" />
<!-- I am at the TOP! -->
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/etInput"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:hint="@string/hint" />
<!-- and now lets place the scrollview between textview and edittext -->
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView"
android:layout_below="@+id/etInput"
android:layout_above="@+id/textView>
<LinearLayout
android:orientation="vertical"
android:id="@+id/lLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</ScrollView>
</RelativeLayout>
如果你真的需要在底部使用LinearLayout(如果你想在那里添加更多),只需使用LinearLayout包装TextView,将layout_alignParentBottom放入LinearLayout并修改ScrollView的layout_below id以适合LinearLayout中的那个< / p>