2010-07-15 6 views
3

Android Gallery 튜토리얼 (http://developer.android.com/guide/tutorials/views/hello-gallery.html)을 따르고 있지만 단순한 이미지 대신 완전히 새로운 화면으로 수평 이동이 가능하도록하고 싶습니다. LinearLayout. 이 아이디어는 일종의 탭 동작이지만 사용자는 화면을 스 와이프 할 수 있습니다. 내가 사용하고있는 경우, 그것은 작동합니다갤러리를 사용하여보기간에 스 와이프하기

@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; 
} 

위의 예에서 :

가 나는 복잡한 뷰를 반환하려고 BaseAdapter에서와 준 getItem() 메소드에서 확장하는 GalleryAdapter을 만들어 갤러리를 만들어 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이 아니기 때문입니다. getLayoutXmlResourceParser이 아닌 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

는 레이아웃 함께 할 수있는 뭔가가있는 것처럼 보인다. 빈 활동을로드하고 레이아웃을 설정하면 어떻게됩니까? 레이아웃이 어떻게 생겼는지.

관련 문제