2011-02-01 123 views
3

我有4個按鈕,我想在GridView中顯示。我希望他們儘可能地填滿屏幕,但我從來沒有做到。我已經嘗試過所有類型的ScaleType,它不會起作用。現在我有FIT_CENTER中的縮放類型,但我得到了意想不到的結果。下面的代碼我到目前爲止:按鈕調整大小問題Android

Main.java

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Display screenSize = getWindowManager().getDefaultDisplay(); 
     int screenWidth = screenSize.getWidth(); 
     int screenHeight = screenSize.getHeight(); 

     int iconWidth = screenWidth/4; 
     int iconHeight= screenHeight/2; 

     GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(this, iconWidth, iconHeight)); 

     } 

ImageAdapter.java

public View getView(final int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { 
      imageView = new ImageView(m_Context); 
      imageView.setLayoutParams(new GridView.LayoutParams(m_width, m_height)); 
      imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
      imageView.setPadding(8, 8, 8, 8); 

     } else { 
      imageView = (ImageView) convertView; 
     } 
     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 
    } 

GridViewLayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:columnWidth="90dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
    android:numColumns="2" 
    android:background="#FFFFFF"/> 

代碼的結果是這樣的:

wrong result

這是我想它是什麼樣子:

desired result

注意最後截屏硬編碼這顯然不是我的願望。我希望這可以在沒有硬編碼的情況下適用於每種屏幕尺寸。

+0

可能是這可以幫助你...但這已經完成了線性佈局http://stackoverflow.com/questions/2581481/assign-width-to-half-available-screen-width-claclaratively – DeRagan 2011-02-01 11:30:24

回答

0

您可以使用GridLayoutManager的回收站視圖來實現它。 您可以定義單個項目的大小以匹配設備高度和寬度的一半。那麼這將是你預期的結果。