如何在 Android 中增加 ScrollView 高度?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3675195/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 11:18:22  来源:igfitidea点击:

How to increase ScrollView height in Android?

androidscrollview

提问by sivaraj

alt text

替代文字

Hi friends,

嗨朋友们,

I am using GridViewinside a ScrollViewfor displaying images. In the GridView I have 16 images which were dynamically added, but the ScrollViewdoes not display all 16 images (see screenshot).

GridView在 a 内部使用 ScrollView来显示图像。在 GridView 中,我有 16 张动态添加的图像,但ScrollView没有显示所有 16 张图像(见截图)。

I want the ScrollViewto display the whole GridView, does anybody know how I can fix this?

我想ScrollView显示整个GridView,有人知道我该如何解决这个问题吗?

Thanks all.

谢谢大家。

xml file:

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<merge android:layout_width="wrap_content" android:layout_height="340dip" xmlns:android="http://schemas.android.com/apk/res/android">
 <LinearLayout  android:id="@+id/LinearLayout01"  
 android:layout_width="fill_parent" 
 android:layout_height="320dip" android:orientation="vertical" 
 android:background="@color/black">
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/scrollview"
            android:layout_width="fill_parent"
            android:layout_height="500dip"
            android:background="#ffffff"
            android:paddingTop="10dip"
            android:paddingLeft="5dip"
            android:layout_weight="1">

 <GridView 
                    android:id="@+id/jr_lookbook_grid" android:layout_width="fill_parent"
                    android:layout_height="fill_parent" android:numColumns="4"
                    android:verticalSpacing="10dp" android:horizontalSpacing="10dp"
                    android:columnWidth="90dp" android:stretchMode="columnWidth"
                    android:adjustViewBounds="true"
                    android:background="@drawable/shape"     

                    android:gravity="center"  android:layout_weight="1"/> 
</ScrollView>

                  <Button  android:id="@+id/click"
                  android:background="@android:color/transparent"
                   android:text="Load More Pictures..."

                   android:textColor="@color/white"
                   android:layout_width="fill_parent" android:layout_height="wrap_content"
                   android:layout_centerVertical="true"  />

</LinearLayout>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout02_img"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_alignParentBottom="true"
    android:background="@color/black"
                android:layout_alignParentLeft="true"> 

    <WebView 
        android:id="@+id/webview"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"         
        android:scrollbars="none"  

    />
    <ImageView android:id="@+id/ImageView01" 
    android:layout_gravity="center_horizontal"
    android:scaleType="centerInside"
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent"

    android:adjustViewBounds="true">
</ImageView>

    </LinearLayout>
   <LinearLayout android:id="@+id/LinearLayout02"     android:background="#AA000000" 
         android:layout_width="400px"
        android:layout_height="50dip"
        android:layout_gravity="bottom"      
          >
                            <Button
                android:id="@+id/back"

                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
               android:background="@drawable/back1"
                android:layout_alignParentRight="true"
                android:layout_marginLeft="10dip"

              />

                 <Button
                  android:background="@drawable/forward5"
                android:id="@+id/next"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_alignParentRight="true"
                android:layout_marginLeft="215dip"

                 />
</LinearLayout>

</merge>

回答by Vikas Patidar

Use attribute android:fillViewport="true"in XML layout or use method setFillViewport(true)in Java code.

android:fillViewport="true"在 XML 布局中使用属性或setFillViewport(true)在 Java 代码中使用方法。

Have a look at : ScrollView documentation

看一看:ScrollView 文档

回答by birdman

I had a similar issue where I had a scrollview under a fixed Navigation bar on an AbsoluteLayout.

我有一个类似的问题,我在 AbsoluteLayout 上的固定导航栏下有一个滚动视图。

I set the scrollview height to the height of my screen less the height of the navbar. My screen was 480dp high and the navbar was 47dp high so I set the scrollview height to 433dp in the xml layout and moved the top of the scrollview down below the navbar using a Y offset.

我将滚动视图高度设置为屏幕高度减去导航栏的高度。我的屏幕高 480dp,导航栏高 47dp,所以我在 xml 布局中将滚动视图高度设置为 433dp,并使用 Y 偏移将滚动视图的顶部向下移动到导航栏下方。

<ScrollView
    android:id="@+id/scroll_view"
    android:layout_width="fill_parent"
    android:layout_height="433dp"
    android:layout_x="0dp"
    android:layout_y="50dp"
    android:fillViewport="true" >

Add the following imports:

添加以下导入:

import android.content.Context;
import android.view.WindowManager;
import android.widget.ScrollView;
import android.view.Display;

Now to make it work for multiple screens I added this to onCreate for the activity:

现在为了使其适用于多个屏幕,我将其添加到 onCreate 以用于活动:

    ScrollView myScrollView = (ScrollView) findViewById(R.id.scroll_view);
    myScrollView.getLayoutParams().height = ((int) ScHgt(this)-47);

With the help of this helper function to get the screen height:

借助此辅助函数获取屏幕高度:

//----------------------------------------------------------------------------------------------
//  public static double ScHgt(Context context)
//----------------------------------------------------------------------------------------------
    //return the screen height of the device
public static double ScHgt(Context context)
{
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = windowManager.getDefaultDisplay();
    return display.getHeight();
} 

回答by MobDev

You should not add GridView into ScrollView. Please refer the GridView APIfor understanding GridView.

您不应将 GridView 添加到 ScrollView。请参阅GridView API以了解 GridView。

As per the definition GridView displays the items in two dimensional scrollable grid. Hence, if you would add a scrollable component inside ScrollView the behavior would not be as expected. As we cannot add ListView inside ScrollView we cannot and should not add GridView inside ScrollView.

根据定义 GridView 在二维可滚动网格中显示项目。因此,如果您要在 ScrollView 中添加可滚动组件,则行为将与预期不同。因为我们不能在 ScrollView 中添加 ListView,所以我们不能也不应该在 ScrollView 中添加 GridView。

回答by FabianCook

If the bottom part of the layout& top part of the layout weight are 0, then set the scroll views to 1 and use layout_height="match_parent".

如果layout布局权重的底部和顶部为 0,则将滚动视图设置为 1 并使用layout_height="match_parent".

回答by Rohit

According to me, there is no need to add scroll view for Grid View. In Android, it will add scroll view automatically, if there is any need.

据我所知,不需要为网格视图添加滚动视图。在 Android 中,如果有任何需要,它会自动添加滚动视图。