2010-07-15 49 views
3

我遵循Android圖庫教程(http://developer.android.com/guide/tutorials/views/hello-gallery.html),但不是簡單的圖像,我希望能夠水平移動到一個完整的新屏幕,例如,一個LinearLayout。這個想法是一種標籤行爲,但用戶可以通過屏幕滑動。使用圖庫在視圖之間滑動

我創建了一個庫,創建了從BaseAdapter和爲getItem()方法擴展我嘗試返回複雜視圖GalleryAdapter:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    /*ImageView i = new ImageView(this.c); 
    i.setImageResource(R.drawable.login); 
    i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
    i.setScaleType(ImageView.ScaleType.FIT_XY); 
    return i;*/  

    ScrollView view = (ScrollView)this.c.getResources().getLayout(R.layout.main); 
    return view; 
} 

在上面的例子中,它會工作,如果我使用一個ImageView,但是一旦我使用像資源加載的scrollView這樣更復雜的視圖,它就會失敗。

任何想法爲什麼?唯一的例外是:

07-15 13:47:36.498: ERROR/AndroidRuntime(446): java.lang.ClassCastException: android.content.res.XmlBlock$Parser 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at de.flavor.myviews.GalleryAdapter.getView(GalleryAdapter.java:44) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:192) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.view.View.measure(View.java:8171) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.view.View.measure(View.java:8171) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.view.View.measure(View.java:8171) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.view.ViewRoot.performTraversals(ViewRoot.java:801) 
07-15 13:47:36.498: ERROR/AndroidRuntime(446):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 

感謝名單 斯文

回答

2

這是因爲a)這不是你如何得到ScrollView和b)不是你應該實施getView的方式。你看到這種模糊感,因爲getLayout返回XmlResourceParser而不是ScrollView。要做到你想要什麼,你需要:

在您的適配器的構造函數,你需要:

inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

這會給你的佈局吹氣的參考。

在你getView

View view = inflater.inflate(R.layout.main, parent, false); 
return view; 

在你layout_main你應該在ScrollView因爲整個佈局正在充氣包裝的一切。

0

我看起來有一些與你的佈局。如果你只是加載一個空的活動並將佈局設置爲那麼會發生什麼?你的佈局是什麼樣的。