【问题标题】:How to limit from scrolling of an image (in scrollview) into the white space?如何限制图像(在滚动视图中)滚动到空白区域?
【发布时间】:2016-12-27 07:32:02
【问题描述】:

我是 Android Studio 和一般 Android 开发的初学者。我希望滚动视图只允许滚动到图像的末尾,但它滚动到空白区域。我尝试了很多东西,但我就是不明白哪里出错了。

The scrollable image, Image showing scrolling into the white space

这是 XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:overScrollMode="never"
        tools:context="com.android101.chroniclesofnarutouzumaki.MainActivity">


        <RelativeLayout
            android:id="@+id/relative_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">


            <ImageView
                android:src="@drawable/naruto_uzumaki"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="fitStart"
                android:id="@+id/naruto" />

            <TextView
                android:id="@+id/text1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="25dp"
                android:text="Never Give Up!" />

            <TextView
                android:id="@+id/text2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/text1"
                android:layout_marginEnd="12dp"
                android:layout_marginRight="12dp"
                android:layout_marginTop="438dp"
                android:text="What to Add?" />

        </RelativeLayout>

    </ScrollView>

【问题讨论】:

  • 成功解决。刚刚在 imageview 中添加了 'android:adjustViewBounds="true"'。

标签: android android-studio scrollview


【解决方案1】:

在 Layout 中获得额外空白的原因是在 TextView 中您提到 marginTop 属性为 android:layout_marginTop="438dp" 并且您没有将 adjustViewbounds 设置为 ImageView。

更多图像的目的是在布局背景上显示意味着您可以将图像设置为相对布局的背景。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fillViewport="true"
    android:overScrollMode="never"
   >


    <RelativeLayout
        android:id="@+id/relative_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">


        <ImageView
            android:src="@drawable/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/naruto"
            android:adjustViewBounds="true"/>

        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="25dp"
            android:text="Never Give Up!" />

        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/text1"
            android:layout_marginEnd="12dp"
            android:layout_marginRight="12dp"
            android:layout_alignParentBottom="true"
            android:text="What to Add?" />

    </RelativeLayout>

   </ScrollView>

【讨论】:

    【解决方案2】:

    试试这个:

    <?xml version="1.0" encoding="utf-8"?>
    
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:overScrollMode="never"
    >
    
    
        <RelativeLayout
            android:id="@+id/relative_layout"
            android:layout_width="match_parent"
            android:background="@drawable/naruto_uzumaki"
            android:layout_height="wrap_content">
    
    
           <!-- <ImageView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="fitStart"
                android:id="@+id/naruto" />
    -->
            <TextView
                android:id="@+id/text1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="25dp"
                android:text="Never Give Up!" />
    
            <TextView
                android:id="@+id/text2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/text1"
                android:layout_marginEnd="12dp"
                android:layout_marginRight="12dp"
                android:layout_marginTop="438dp"
                android:text="What to Add?" />
    
        </RelativeLayout>
    
    </ScrollView>
    

    【讨论】:

      【解决方案3】:

      如果我明白你想要什么,你需要将空白空间固定高度或始终可见(text1,text2)并且只滚动图像,如果是这种情况,你需要使用线性布局并在里面放一个权重为 1 的滚动视图,文本 1 和文本 2 为它们提供高度环绕内容,代码如下:

      <?xml version="1.0" encoding="utf-8"?>
      

      <ScrollView
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1">
      
      
          <ImageView
              android:id="@+id/naruto"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:scaleType="fitStart"
              android:src="@drawable/bassma_avatar" />
      </ScrollView>
      
      <TextView
          android:id="@+id/text1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:layout_centerHorizontal="true"
          android:layout_marginTop="25dp"
          android:text="Never Give Up!" />
      
      <TextView
          android:id="@+id/text2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentEnd="true"
          android:layout_alignParentRight="true"
          android:layout_below="@+id/text1"
          android:layout_marginEnd="12dp"
          android:layout_marginRight="12dp"
          android:text="What to Add?" />
      

      这将使图像以仍然可见 text1 和 2 的方式拉伸,如果它大于此限制,您将能够滚动然后

      【讨论】:

      • 只需为线性布局添加缺少的关闭标签
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      相关资源
      最近更新 更多