如何增加Android中的ScrollView高度?

替代文字

朋友们,

我在ScrollView使用GridView来显示图像。 在GridView中,我有16个图像是dynamic添加的,但ScrollView并不显示全部16个图像(见截图)。

我希望ScrollView显示整个GridView ,有没有人知道我可以解决这个问题?

谢谢大家。

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> 

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

看看: ScrollView文档

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

我将scrollview的高度设置为屏幕的高度减去导航栏的高度。 我的屏幕是480dp高,导航栏是47dp高,所以我把滚动视图的高度设置为433dp在xml布局,并使用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" > 

添加以下导入:

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

现在为了让它在多个屏幕上工作,我把这个添加到了onCreate的活动中:

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

借助这个辅助函数来获得屏幕高度:

 //---------------------------------------------------------------------------------------------- // 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(); } 

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

按照定义,GridView以二维可滚动网格显示项目。 因此,如果在ScrollView中添加一个可滚动组件,行为将不会如预期的那样。 因为我们不能在ScrollView中添加ListView,所以我们不能也不应该在ScrollView中添加GridView。

据我所知,没有必要为Grid View添加滚动视图。 在Android中,如果有任何需要,它会自动添加滚动视图。

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