我有一个包含ScrollView
的xml文件,里面有一个LinearLayout
;此布局还包含2个以上布局:
1st是动态添加数据的地方
第二个是需要在视图底部显示的东西。
但引力不起作用,我已经尝试了gravity
和layout_gravity
,但都没有效果,所有布局都设置为填充父级,为什么会发生这种情况呢?
版权布局必须在ScrollView
内,但在屏幕底部即使ScrollView
为空(第一版)。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/istoricLayout"
android:visibility="visible" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/istoric"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" //here I'm trying to move this at the buttom
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="@dimen/thick_bar_height"
android:layout_marginBottom="@dimen/bar_vertical_space"
android:layout_marginTop="@dimen/bar_vertical_space"
android:background="@color/white" />
<Button
android:id="@+id/versiuneaCompleta"
android:layout_width="250dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/color2"
android:text="Vizioneaza versiunea completa"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="15dp" />
<RelativeLayout
android:layout_width="250dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/white" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:src="@drawable/support_right_icon" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:src="@drawable/support_left_icon" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@color/white"
android:text="Support +40.XXX.XXX.XXX"
android:textAlignment="center"
android:textColor="@color/color2"
android:textSize="15dp" />
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Politica de condidentialitate ·"
android:textColor="@color/white"
android:textSize="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Despre noi ·"
android:textColor="@color/white"
android:textSize="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Contact"
android:textColor="@color/white"
android:textSize="10dp" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="© 2013 Artcos Design. All Rights Reserved"
android:textColor="@color/copyRightColor"
android:textSize="10dp" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
答案 0 :(得分:2)
根据对@ Doomsknight的回答的评论,在android:fillViewPort="true"
上设置ScrollView
。
滚动视图的子节点上的高度属性被忽略(如果它被尊重,整个滚动视图将是无用的)。设置fillViewPort="true"
会使滚动视图子项扩展到父高度(如果它小于父高度),否则该属性不执行任何操作。这样,滚动视图中的孩子LinearLayout
将至少与滚动视图的父级一样高,使重力按您想要的方式工作。
此外,将孩子的LinearLayout
高度设为wrap_content
,并为第一个LinearLayout
分配一个非零layout_weight
。您也可以删除bottom
layout_gravity
。
答案 1 :(得分:2)
将整个事情改为:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/istoricLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/bottomLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="@dimen/thick_bar_height"
android:layout_marginBottom="@dimen/bar_vertical_space"
android:layout_marginTop="@dimen/bar_vertical_space"
android:background="@color/white" />
<Button
android:id="@+id/versiuneaCompleta"
android:layout_width="250dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/color2"
android:text="Vizioneaza versiunea completa"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="15dp" />
<RelativeLayout
android:layout_width="250dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/white" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:src="@drawable/support_right_icon" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:src="@drawable/support_left_icon" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@color/white"
android:text="Support +40.766.154.894"
android:textAlignment="center"
android:textColor="@color/color2"
android:textSize="15dp" />
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Politica de condidentialitate ·"
android:textColor="@color/white"
android:textSize="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Despre noi ·"
android:textColor="@color/white"
android:textSize="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Contact"
android:textColor="@color/white"
android:textSize="10dp" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="© 2013 Artcos Design. All Rights Reserved"
android:textColor="@color/copyRightColor"
android:textSize="10dp" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomLayout" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/istoric"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
修改强> 将引用的尺寸,颜色和图像设置为有意义的东西,布局看起来像下面的图像(为清楚起见,ScrollView有红色背景,bottomLayout有黄色背景)。
正如您所见,bottomLayout
位于底部。
答案 2 :(得分:2)
查看此链接,它包含您的问题的解释:
http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/
ScrollView的android:fillViewport应该设置为true,这允许子视图自我扩展以填充ScrollView的高度。 然后,选择一个将要展开的子元素以填充空白空间并将其layout_weight设置为1(假设使用LinearLayout)。该元素通常是小部件正上方的元素,旨在放置在底部。
XML文件应如下所示:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content">
<!-- widget 1 -->
<!-- widget 2 -->
<!-- ... -->
<!-- widget n -->
<!-- this widget expands to fill the empty space -->
<TextView
android:layout_height="fill_parent"
android:layout_weight="1">
</TextView>
<!-- this copyright layout is going to be placed rock bottom -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="© 2013 Artcos Design. All Rights Reserved"
android:textColor="@color/copyRightColor"
android:textSize="10dp" />
</LinearLayout>
</ScrollView>
答案 3 :(得分:1)
在滚动视图下方移动文本视图。你以错误的方式使用重力。
我认为你希望你的版权在底部固定。
重力用于以某种方式显示视图的内容。或者如何定位视图本身,但它不会改变视图层次结构。
</LinearLayout>
</LinearLayout>
</ScrollView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="© 2013 Artcos Design. All Rights Reserved"
android:textColor="@color/copyRightColor"
android:textSize="10dp" />
</LinearLayout>
您还需要更改滚动视图,因此它不会占用屏幕高度,而是最好填充该区域,留出版权声明的空间:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" >