【问题标题】:RelativeLayout inside Scrollview expands more than screen sizeScrollview 中的 RelativeLayout 比屏幕大小扩展更多
【发布时间】:2014-05-06 08:40:11
【问题描述】:

我有这个布局,带有相对布局的滚动视图,我添加了滚动视图,因为在较小的设备上,单独的 RelativeLayout 会切断超出屏幕尺寸的部分布局,因此任何大于屏幕高度的东西都是不可见的。

我尝试将RelativeLayout wrap_content 添加到高度,但这并没有解决它,所以我添加了滚动视图,现在整个布局都显示了,但是在像nexus 4 这样具有更大屏幕的设备上,相对布局会延伸到屏幕高度,因此用户必须滚动才能看到底部的 textViews。

无论如何我知道问题出在这个 ImageView 有 drawable:src=@drawable/background

这会强制相对布局超过屏幕高度,我使用centerCrop作为图像,图像的高度是1200,nexus 4的高度是1280,所以ImageView应该适合屏幕但是它延伸了整个布局。黑线是屏幕结束的近似位置,而不是在该点切割 imageView,RelativeLayout 在该点之后扩展...

如何确保我的 RelativeLayout 在分辨率较高的设备上不会超过屏幕高度,但在较小的设备上包括滚动不适合屏幕高度的内容?目前我必须滚动到所有设备上的底部 textViews..

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    android:fillViewport="true" >

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

        <ImageView
            android:id="@+id/bg"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:paddingLeft="-20dp"
            android:scaleType="centerCrop"
            android:src="@drawable/background" />

        <ImageView
            android:id="@+id/trophystack"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:paddingTop="20dp"
            android:scaleType="center"
            android:src="@drawable/trophystack" />

        <LinearLayout
            android:id="@+id/llTrophyStackLogin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:orientation="vertical"
            android:paddingBottom="20dp"
            android:paddingTop="20dp" >

            <EditText
                android:id="@+id/email_address"
                android:layout_width="250dp"
                android:layout_height="70dp"
                android:layout_marginBottom="2dp"
                android:background="@android:color/white"
                android:drawableLeft="@drawable/usericon2"
                android:fontFamily="sans-serif"
                android:gravity="center"
                android:hint="user@email.com"
                android:inputType="textEmailAddress"
                android:minWidth="250dp"
                android:tag="login_email" />

            <EditText
                android:id="@+id/password"
                android:layout_width="250dp"
                android:layout_height="70dp"
                android:background="@android:color/white"
                android:drawableLeft="@drawable/lock"
                android:gravity="center"
                android:hint="********"
                android:inputType="textPassword"
                android:tag="login_password" />

            <Button
                android:id="@+id/doLogin"
                android:layout_width="250dp"
                android:layout_height="70dp"
                android:layout_marginTop="20dp"
                android:background="@drawable/buttontexture1"
                android:minWidth="200dp"
                android:onClick="goQueue"
                android:text="Sign In"
                android:textColor="@android:color/white" />
        </LinearLayout>

        <TextView
            android:id="@+id/forgot_password_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="20dp"
            android:text="Forgot password?"
            android:textColor="#FFFFFF"
            android:textSize="16dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/sign_up_text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="20dp"
            android:layout_marginRight="20dp"
            android:clickable="true"
            android:text="Sign up"
            android:textColor="@android:color/white"
            android:textSize="19dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/sign_up_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="20dp"
            android:layout_marginRight="2dp"
            android:layout_toLeftOf="@id/sign_up_text2"
            android:clickable="true"
            android:text="New here?"
            android:textColor="@android:color/white"
            android:textSize="16dp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@id/sign_up_text"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_below="@id/llTrophyStackLogin"
            android:background="#0000"
            android:minHeight="50dp"
            android:onClick="doSwipe"
            android:textColor="@android:color/white" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignRight="@id/forgot_password_text"
            android:layout_below="@id/llTrophyStackLogin"
            android:background="#0000"
            android:minHeight="50dp"
            android:onClick="doForgotPassword"
            android:textColor="@android:color/white" />
    </RelativeLayout>

</ScrollView>

【问题讨论】:

  • 发布你的布局截图。

标签: android user-interface layout


【解决方案1】:

删除这一行

android:src="@drawable/background"

来自ImageView 并将其设置为RelativeLayout 的背景。

android:background="@drawable/background"

【讨论】:

  • 我试过了,但是图像纵横比会歪斜,因为在这种情况下 scaleType 是 fitXY
  • 如果没有必要,您需要删除该 ImageView。
  • 你也可以在线性布局中添加你的ScrollView,然后为它设置背景。
  • 是的,我想这是要走的路,如果没有其他答案发布,我会再等一会儿,然后接受您的答案..
猜你喜欢
  • 1970-01-01
  • 2012-06-13
  • 2014-10-22
  • 2021-11-23
  • 2021-01-20
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多