2011-04-20 169 views
0

嗨我正在設置一個android應用程序,並使用了選項卡式界面。我想要兩個選項卡,一個基於文本的選項卡(歌曲),一個Gridview教程中的圖像的GridView選項卡。如何在選項卡式佈局中顯示gridview

以標籤界面tutrial爲例,我在主類的onCreate()事件中聲明瞭標籤的內容。

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Resources res = getResources(); // Resource object to get Drawables 
     TabHost tabHost = getTabHost(); // The activity TabHost 
     TabHost.TabSpec spec; // Resusable TabSpec for each tab 
     Intent intent; // Reusable Intent for each tab 

     // Create an Intent to launch an Activity for the tab (to be reused) 
     intent = new Intent().setClass(this, GalleryActivity.class); 

     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("artists").setIndicator("Artists", 
          res.getDrawable(R.drawable.ic_tab_artists)) 
         .setContent(intent); 
     tabHost.addTab(spec);   

     intent = new Intent().setClass(this,songs.class); 

     spec = tabHost.newTabSpec("songs").setIndicator("Songs", res.getDrawable(R.drawable.ic_tab_artists)) 
         .setContent(intent); 
     tabHost.addTab(spec);   

    } 

而且我的畫廊活動

public class GalleryActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  


    GridView gridview = new GridView(this); 
    gridview.setAdapter(new ImageAdapter(this)); 
    setContentView(R.layout.grid); 



} 

}

} 
} 

我的XML文件

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="5dp"> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:padding="5dp" /> 
    </LinearLayout> 
</TabHost> 

我的適配器類是

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    public ImageAdapter(Context c) { 
     // TODO Auto-generated constructor stub 
     mContext= c; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return mThumbIds.length; 

    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     ImageView imageView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext);    

      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 

      //myButton.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL)); 



     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 

    } 

    // references to our images 
    private Integer[] mThumbIds = { 
      R.drawable.sample_2, R.drawable.sample_3, 
      R.drawable.sample_4, R.drawable.sample_5, 
      R.drawable.sample_6, R.drawable.sample_7, 
      R.drawable.sample_0, R.drawable.sample_1, 
      R.drawable.sample_2, R.drawable.sample_3, 
      R.drawable.sample_4, R.drawable.sample_5, 
      R.drawable.sample_6, R.drawable.sample_7, 
      R.drawable.sample_0, R.drawable.sample_1, 
      R.drawable.sample_2, R.drawable.sample_3, 
      R.drawable.sample_4, R.drawable.sample_5, 
      R.drawable.sample_6, R.drawable.sample_7 
    }; 
} 

這樣做,當我編譯和運行程序我沒有得到的網格佈局 enter image description here

輸出後,無法正常formated.I認爲通過添加網格視圖XML屬性適配器類可以修復錯誤。但我不知道如何使用在Java UI屬性屬性是

android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:columnWidth="90dp" 
android:numColumns="auto_fit" 

任何一個可以幫助我

回答

1

而不是使用的setContentView(GridView控件)的;在GalleryAcitvity使用一個單獨的XML文件(比如grid.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:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
/> 

然後在GalleryActivity使用

setContentView(R.layout.grid); 

在onCreate方法的開始。 試試這個。

+0

did not work for me.I getting getting black screen only in galleryActivity – Anish 2011-04-20 10:07:48

+0

你可以編輯上面發佈的代碼讓我知道你做了什麼,因爲它應該工作。 – 2011-04-20 10:10:33

+0

我做了你所說的。我創建了新的xml文件並在我的GalleryActivity類中添加了setContentView(R.layout.grid)。我編輯了上述代碼 – Anish 2011-04-20 10:14:54

相關問題