android - 带有 float 线性布局的 ScrollView 不会滚动

标签 android user-interface android-layout

这是我的图形用户界面 xml:

<FrameLayout android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:id="@+id/frameLayout"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ScrollView android:layout_width="fill_parent" android:id="@+id/scrollView"
        android:fillViewport="true" android:layout_height="fill_parent">

        <LinearLayout android:layout_width="fill_parent"
            android:orientation="vertical" android:id="@+id/contentLayout"
            android:padding="5dip" android:fadingEdge="vertical"
            android:layout_height="fill_parent">
            <TextView android:id="@+id/lblName" android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:text="@string/label_name"></TextView>
            <LinearLayout android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:id="@+id/nameLayout">
                <CheckBox android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:id="@+id/chkName"></CheckBox>
                <TextView android:layout_marginLeft="4dip"
                    android:layout_marginRight="4dip" android:id="@+id/txtName"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:textColor="@color/white" android:text="TextView"
                    android:layout_weight="1" android:textSize="20dip"></TextView>
            </LinearLayout>
            <TextView android:id="@+id/lblPhone" android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:text="@string/label_phone"></TextView>
            <LinearLayout android:isScrollContainer="false"
                android:layout_width="fill_parent" android:layout_height="wrap_content"
                android:orientation="vertical" android:id="@+id/lstPhone"></LinearLayout>
            <TextView android:id="@+id/lblEmail" android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:text="@string/label_email"></TextView>
            <LinearLayout android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:orientation="vertical"
                android:id="@+id/lstEmail"></LinearLayout>
            <TextView android:id="@+id/lblAddress" android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:text="@string/label_address"></TextView>
            <LinearLayout android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:orientation="vertical"
                android:id="@+id/lstAddress"></LinearLayout>
        </LinearLayout>
    </ScrollView>
    <LinearLayout android:background="@color/grey"
        android:layout_width="fill_parent" android:paddingTop="5dip"
        android:layout_height="wrap_content" android:orientation="horizontal"
        android:layout_gravity="bottom|right" android:id="@+id/commandLayout">
        <Button android:id="@+id/btnToClipBoard" android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:text="To ClipBoard"
            android:layout_weight="1"></Button>
        <Button android:id="@+id/btnCancel" android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:text="Cancel"
            android:layout_weight="1"></Button>
    </LinearLayout>
</FrameLayout>

LinearLayout id: commandLayout 很好地保持在窗口的底部。但是 LinearLayout id: contentLayout 不会滚动。如果我将 commandLayout 移动到 scrollView 内,一切都会滚动。那不是我想要的。无论 contentLayout 有多长,我都想看到按钮。任何帮助将不胜感激。我一天的大部分时间都花在了这上面……谢谢。

编辑:感谢您的所有回复。从 FrameLayout 更改为 RelativeLayout 并设置 commandLayout align parent bottom 和 scrollview align parent top 是最有效的解决方案。

最佳答案

我将基本布局“frameLayout”更改为相对布局。

我这样做是为了让“commandLayout”位于“scrollView”下方。 如果你要显示的东西隐藏在“commandLayout”后面是没有意义的

我在“commandLayout”上添加了 alignParentBottom。 我还在“scrollView”中添加了 layout_above="@+id/commandLayout"

这是有效的 xml,是的,它确实滚动 =)

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/relativeLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<ScrollView 
    android:layout_width="fill_parent"
    android:id="@+id/scrollView"
    android:fillViewport="true"
    android:layout_height="fill_parent"
    android:layout_above="@+id/commandLayout"
>
    <LinearLayout 
        android:layout_width="fill_parent"
        android:orientation="vertical"
        android:id="@+id/contentLayout"
        android:padding="5dip"
        android:fadingEdge="vertical"
        android:layout_height="fill_parent"
    >
        <TextView
            android:id="@+id/lblName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        >
        </TextView>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/nameLayout"
        >
            <CheckBox 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/chkName">
            </CheckBox>
            <TextView
                android:layout_marginLeft="4dip"
                android:layout_marginRight="4dip"
                android:id="@+id/txtName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#FFFFFF"
                android:text="TextView"
                android:layout_weight="1"
                android:textSize="20dip">
            </TextView>
        </LinearLayout>

        <TextView
            android:id="@+id/lblPhone"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        >
        </TextView>
        <LinearLayout
            android:isScrollContainer="false"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:id="@+id/lstPhone">
        </LinearLayout>
        <TextView
            android:id="@+id/lblEmail"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        >
        </TextView>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:id="@+id/lstEmail"
        >
        </LinearLayout>
        <TextView
            android:id="@+id/lblAddress"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        >
        </TextView>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:id="@+id/lstAddress">
        </LinearLayout>
        <TextView
            android:id="@+id/LongText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="40sp"
            android:text="This is a super long text that will hopefully cover the whole screen so as the scroll will work."
        >
        </TextView>

         <TextView
            android:id="@+id/AnotherLongText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="40sp"
            android:text="This is another super long text to show that the scrolling will work even more!"
        >
        </TextView>
    </LinearLayout>
</ScrollView>

<LinearLayout
    android:background="#737754"
    android:layout_width="fill_parent"
    android:paddingTop="5dip"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:id="@+id/commandLayout"
    android:layout_alignParentBottom="true"
>
    <Button
        android:id="@+id/btnToClipBoard"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="To ClipBoard"
        android:layout_weight="1">
    </Button>
    <Button
        android:id="@+id/btnCancel"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="Cancel"
        android:layout_weight="1">
    </Button>
</LinearLayout>
</RelativeLayout>

关于android - 带有 float 线性布局的 ScrollView 不会滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507597/

相关文章:

java - Google Play游戏/服务登录会随机停止使用resultCode GamesActivityResultCodes.RESULT_SIGN_IN_FAILED/10002

java - 定时器不允许用户编辑

user-interface - Monodevelop GUI 设计器不适用于 ubuntu

android - 与布局相关的问题

android - 如何为不同的屏幕分辨率安排 dimens.xml?

安卓SDK : Is Drawable's picture contained in memory?

android更改游标适配器中的游标位置以增加或减少行

android - 包含 ArrayList 语法异常的 Gson 对象

asp.net - 调查问卷中单选按钮的默认状态

java - 如何在自动创建的多个按钮上管理 OnClickListener