如何添加"静态"挡在屏幕的尽头?

时间:2014-03-17 09:09:24

标签: android xml android-layout

我有一个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> 

3 个答案:

答案 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>