嗨朋友们,
我在GridView
内使用ScrollView
来显示图片。在GridView中我有16个动态添加的图像,但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>
答案 0 :(得分:33)
在XML布局中使用属性android:fillViewport="true"
或在Java代码中使用方法setFillViewport(true)
。
答案 1 :(得分:4)
我有一个类似的问题,我在AbsoluteLayout的固定导航栏下有一个滚动视图。
我将scrollview高度设置为我的屏幕高度减去导航栏的高度。 我的屏幕高480dp,导航栏高47dp所以我在xml布局中将scrollview高度设置为433dp,并使用Y偏移将scrollview顶部向下移动到导航栏下方。
<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();
}
答案 2 :(得分:3)
您不应将GridView添加到ScrollView中。请参阅GridView API以了解GridView。
根据定义,GridView在二维可滚动网格中显示项目。因此,如果要在ScrollView中添加可滚动组件,则行为将不会如预期的那样。由于我们无法在ScrollView中添加ListView,因此我们不能也不应该在ScrollView中添加GridView。
答案 3 :(得分:0)
如果layout
&amp;的底部布局权重的上半部分为0,然后将滚动视图设置为1并使用layout_height="match_parent"
。
答案 4 :(得分:0)
据我所知,没有必要为Grid View添加滚动视图。在Android中,如果有需要,它会自动添加滚动视图。