Android底部按钮栏&滚动视图与对话框主题

时间:2011-03-11 14:24:23

标签: android dialog scrollview buttonbar

我正在尝试使用以下内容显示Android活动:

  • 一个对话框主题;
  • 固定在对话框顶部的标题;
  • 固定在对话框底部的按钮栏;
  • 中间的滚动视图。

我编写的布局符合这些条件,但对话框始终填满整个屏幕(请参见底部的垂直屏幕截图)。

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">

    <TextView android:id="@+id/header"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_marginLeft="10dp" android:layout_marginRight="10dp"
    android:layout_marginTop="10dp" android:layout_marginBottom="10dp"
    android:gravity="center_vertical"
        android:textSize="18dip" android:textColor="#ffffff"
        android:text="Sample Layout" />

    <LinearLayout android:id="@+id/controls" android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    style="@android:style/ButtonBar">
        <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_weight="1" android:text="Yes" />
        <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_weight="1" android:text="No" />
    </LinearLayout>

    <ScrollView android:id="@+id/test" android:layout_below="@id/header"
    android:layout_above="@id/controls"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_marginBottom="5dp" android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp">
        <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:text="Lorem ipsum dolor sit amet, consectetur
        adipiscing elit. Integer dui odio, convallis vitae suscipit eu,
        tincidunt non mi. Vestibulum faucibus pretium purus vel adipiscing.
        Morbi mattis molestie risus vitae vehicula. [...]" />
    </ScrollView>

</RelativeLayout>

此外,活动的样式采用@android:style/Theme.Dialogandroid:windowNoTitle

我不确定我理解为什么这个布局会扩展到整个屏幕。没有任何视图的布局高度设置为fill_parent;父布局也未设置为fill_parent

有谁知道我想做什么是可能的,如果是的话怎么做?

我在水平模式下的当前布局

Layout in horizontal mode.

我在垂直模式下的当前布局

Layout in vertical mode.

2 个答案:

答案 0 :(得分:11)

我有一个非常类似于你的活动。我前段时间做过,所以我真的不记得为什么我这样做了,但我认为我实现了你想做的事情。这是我的代码:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/info_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_gravity="bottom"
android:background="@color/color2">

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@color/color1">

    <TextView
        android:id="@+id/infos_titre"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="12dip"
        android:textSize="20dip"
        android:textColor="@color/color2"
        android:gravity="center"
        android:background="@color/color1">
    </TextView>

</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/infos_LL"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/infos_text"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="16dip"
                android:padding="4dip"
                android:textColor="@color/color1"
                android:lineSpacingMultiplier="1.1"
                android:autoLink="web">
            </TextView>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@color/color1"
    android:paddingTop="6dip">

    <Button
        android:id="@+id/infos_remarquebutton"
        android:text="Faire une remarque"
        android:drawableLeft="@drawable/happy"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:textColor="@color/buttontext_color">
    </Button>
    <Button
        android:id="@+id/infos_partagerbutton"
        android:text="Partager"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/ic_menu_share"
        android:layout_weight="1"
        android:textColor="@color/buttontext_color">
    </Button>
</LinearLayout>

不要被Frenglish namings打扰......

所以,我认为主要的技巧是将ScrollView 放在中的LinearLayout。我还给了LinearLayout 1的权重(我不记得为什么......)。 此外,顶部布局是一个LinearLayout,而不是代码中的相对布局,但我不认为它会改变任何东西,虽然我不熟悉RelativeLayouts。

希望它有所帮助!

答案 1 :(得分:0)

我认为既然您为线性布局提供了android:layout_alignParentBottom =“true”,那么Button会移动到底部,它看起来像这样..

所以你删除android更好:layout_alignParentBottom =“true”并使用android:layout_marginTop =“some values”

请试试。谢谢......