Android:将滚动视图位置设置为从屏幕顶部开始的80%

时间:2013-09-22 10:44:45

标签: android android-layout

我正在努力实现这样的目标:

 -  |-------------------|<-------Phone screen
 |  ||-----------------||
 |  ||                 ||
80% ||                 ||
 |  ||                 ||
 |  ||                 |<--------Image View  (fills screen, background)
 -  |||---------------|||
 |  |||               |||
20% |||               |<---------Scroll View (starts after 80% of parent view)
 |  ||-----------------||
 -  |-------------------|  

ImageView有一个图像填充背景,scrollView在80%的高度后启动。有人可以帮我解决所有器件尺寸的问题吗?

2 个答案:

答案 0 :(得分:3)

使用layout_weight

<RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

<LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="8" />

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2">

        </ScrollView>

</LinearLayout>

</RelativeLayout>

答案 1 :(得分:1)

您需要一个LinearLayout,android:orientation="vertical"

然后为ImageView ScrollViewandroid:layout_weight="80"添加ImageViewandroid:layout_weight="20"的两个视图(ScrollViewandroid:layout_height="0dip")。

两者都必须<?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" > <ImageView android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="80" android:src="#FF0000FF" /> <ImageView android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="20" android:src="#FFFF0000" /> 才能确定,只有重量才算重要。

XML代码看起来像这样(我使用了第二个ImageView而不是ScrollView来显示蓝色和红色的结果)

android:backround="<your drawable resoure>"

编辑:要用图像填充背景,您有两种方法:

  • LinearLayout的简单集FrameLayout。你唯一可以放松的是,可以在背景中居中并调整drawable的大小。 ImageView在这一点上有更多的可能性。
  • 因此,第二种方法是使用 <!-- This is your fixed view, e.g. with header information --> <ImageView android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="80" android:src="@android:color/transparent" /> <!-- This would be your scroll view, e.g. for detail information --> <ImageView android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="20" android:src="#FFFF0000" /> 。它是轻量级的,基本上没有任何定位。只需将所有元素放在彼此之上。 XML看起来像这样:

    {{1}}