如何在 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
How to increase ScrollView height in Android?
提问by sivaraj
Hi friends,
嗨朋友们,
I am using GridView
inside a ScrollView
for displaying images. In the GridView I have 16 images which were dynamically added, but the ScrollView
does not display all 16 images (see screenshot).
我GridView
在 a 内部使用 ScrollView
来显示图像。在 GridView 中,我有 16 张动态添加的图像,但ScrollView
没有显示所有 16 张图像(见截图)。
I want the ScrollView
to 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 中,如果有任何需要,它会自动添加滚动视图。