2010-09-09 142 views
8

alt text
如何增加Android中的ScrollView高度?

喜的朋友,

我使用GridView一個ScrollView內用於顯示圖像。在GridView中,我有16個動態添加的圖像,但ScrollView不顯示全部16個圖像(請參見屏幕截圖)。

我想讓ScrollView顯示整個GridView,有誰知道我該如何解決這個問題?

謝謝大家。

xml文件:在Java代碼XML佈局或使用方法setFillViewport(true)

<?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> 

回答

32

使用屬性android:fillViewport="true"

看一看:ScrollView documentation

+0

謝謝!這個問題花了我一些討厭的時間:) – 2012-04-03 07:59:38

+1

都沒有工作... – bubakazouba 2016-02-25 03:59:40

0

如果佈局重量的layout &頂部部分的底部部分是0,則設置滾動視圖1和使用layout_height="match_parent"

0

據我所知,沒有必要爲網格視圖添加滾動視圖。在Android中,如果有任何需要,它會自動添加滾動視圖。

3

您不應該將GridView添加到ScrollView中。請參考GridView API瞭解GridView。

根據定義,GridView顯示二維可滾動網格中的項目。因此,如果你想在ScrollView中添加一個可滾動組件,行爲將不會如預期的那樣。由於我們無法在ScrollView中添加ListView,因此我們不能也不應該在ScrollView中添加GridView。

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