Android 碎片画廊

Android 碎片画廊,android,android-fragments,android-gallery,Android,Android Fragments,Android Gallery,我试图实现一个画廊,每个细胞都是一个片段 gallery_item.xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/cardContainer" android:layout_width="match_parent" android:layout_height="

我试图实现一个画廊,每个细胞都是一个片段

gallery_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cardContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/img1" />
它正在工作,但问题是gallery在无限循环中调用了getView()

这看起来像一个onMeasure问题,下面是堆栈:

Thread [<1> main] (Suspended (breakpoint at line 62 in GalleryAdapter3))    
GalleryAdapter3.getView(int, View, ViewGroup) line: 62  
Gallery(AbsSpinner).onMeasure(int, int) line: 193   
Gallery(View).measure(int, int) line: 15518 
RelativeLayout.measureChildHorizontal(View, RelativeLayout$LayoutParams, int, int) line: 681    
RelativeLayout.onMeasure(int, int) line: 461    
RelativeLayout(View).measure(int, int) line: 15518  
FrameLayout(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4825 
FrameLayout.onMeasure(int, int) line: 310   
FrameLayout(View).measure(int, int) line: 15518 
LinearLayout.measureVertical(int, int) line: 847    
LinearLayout.onMeasure(int, int) line: 588  
LinearLayout(View).measure(int, int) line: 15518    
PhoneWindow$DecorView(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4825   
PhoneWindow$DecorView(FrameLayout).onMeasure(int, int) line: 310    
PhoneWindow$DecorView.onMeasure(int, int) line: 2176    
PhoneWindow$DecorView(View).measure(int, int) line: 15518   
ViewRootImpl.performMeasure(int, int) line: 1874    
ViewRootImpl.measureHierarchy(View, WindowManager$LayoutParams, Resources, int, int) line: 1089 
ViewRootImpl.performTraversals() line: 1265 
ViewRootImpl.doTraversal() line: 989    
ViewRootImpl$TraversalRunnable.run() line: 4351 
Choreographer$CallbackRecord.run(long) line: 749    
Choreographer.doCallbacks(int, long) line: 562  
Choreographer.doFrame(long, int) line: 532  
Choreographer$FrameDisplayEventReceiver.run() line: 735 
Handler.handleCallback(Message) line: 725   
Choreographer$FrameHandler(Handler).dispatchMessage(Message) line: 92   
Looper.loop() line: 137 
ActivityThread.main(String[]) line: 5041    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 511  
ZygoteInit$MethodAndArgsCaller.run() line: 793  
ZygoteInit.main(String[]) line: 560 
NativeStart.main(String[]) line: not available [native method]  
Thread[main](挂起(GalleryAdapter3中第62行的断点))
GalleryAdapter3.getView(int、View、ViewGroup)行:62
画廊(AbsSpinner)。在线测量(int,int)线:193
画廊(视图)。测量(内部,内部)线:15518
RelativeLayout.measureChildHorizontal(视图,RelativeLayout$LayoutParams,int,int)行:681
相对测量(int,int)行:461
相对长度(视图)。测量(整数,整数)行:15518
FrameLayout(视图组)。带边距的measureChildWithMargins(视图,int,int,int,int)行:4825
FrameLayout.onMeasure(int,int)行:310
框架布局(视图)。测量(整数,整数)线:15518
线性布局。测量垂直(int,int)线:847
线性布局。在线测量(int,int)行:588
线性布局(视图)。测量(整数,整数)线:15518
PhoneWindow$DecorView(视图组)。带页边距(视图、整型、整型、整型、整型)的度量ILD行:4825
PhoneWindow$DecorView(FrameLayout).onMeasure(int,int)行:310
电话窗口$DecorView.onMeasure(int,int)行:2176
PhoneWindow$DecorView(视图)。度量(int,int)行:15518
ViewRootImpl.performMeasure(int,int)行:1874
ViewRootImpl.measureHierarchy(视图,WindowManager$LayoutParams,Resources,int,int)行:1089
ViewRootImpl.performTraversals()行:1265
ViewRootImpl.doTraversal()行:989
ViewRootImpl$TraversalRunnable.run()行:4351
编舞$CallbackRecord.run(长)行:749
编舞。doCallbacks(int,long)行:562
编舞。doFrame(长,int)行:532
Choreographer$FrameDisplayEventReceiver.run()行:735
Handler.handleCallback(消息)行:725
Choreographer$FrameHandler(处理程序)。dispatchMessage(消息)行:92
Looper.loop()行:137
ActivityThread.main(字符串[])行:5041
invokenactive(Object,Object[],Class,Class[],Class,int,boolean)行:不可用[本机方法]
调用(对象,对象…)行:511
ZygoteInit$MethodAndArgsCaller.run()行:793
颧骨单位。主(字符串[])行:560
NativeStart.main(字符串[])行:不可用[本机方法]

10倍多

单列GridView可以用作图库替代品

片段在循环使用它们的视图中不能用作子级。我建议您重新考虑当前的逻辑,避免将片段用作该图库的子项(您也应该避免,因为它已被弃用)。10x@Luksprog。我知道图库已被弃用,但仍然无法找到任何替代图库效果的方法,从左到右显示部分项目,你有什么建议吗?不幸的是,我不知道有哪家图书馆可以作为画廊的替代品。
Thread [<1> main] (Suspended (breakpoint at line 62 in GalleryAdapter3))    
GalleryAdapter3.getView(int, View, ViewGroup) line: 62  
Gallery(AbsSpinner).onMeasure(int, int) line: 193   
Gallery(View).measure(int, int) line: 15518 
RelativeLayout.measureChildHorizontal(View, RelativeLayout$LayoutParams, int, int) line: 681    
RelativeLayout.onMeasure(int, int) line: 461    
RelativeLayout(View).measure(int, int) line: 15518  
FrameLayout(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4825 
FrameLayout.onMeasure(int, int) line: 310   
FrameLayout(View).measure(int, int) line: 15518 
LinearLayout.measureVertical(int, int) line: 847    
LinearLayout.onMeasure(int, int) line: 588  
LinearLayout(View).measure(int, int) line: 15518    
PhoneWindow$DecorView(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4825   
PhoneWindow$DecorView(FrameLayout).onMeasure(int, int) line: 310    
PhoneWindow$DecorView.onMeasure(int, int) line: 2176    
PhoneWindow$DecorView(View).measure(int, int) line: 15518   
ViewRootImpl.performMeasure(int, int) line: 1874    
ViewRootImpl.measureHierarchy(View, WindowManager$LayoutParams, Resources, int, int) line: 1089 
ViewRootImpl.performTraversals() line: 1265 
ViewRootImpl.doTraversal() line: 989    
ViewRootImpl$TraversalRunnable.run() line: 4351 
Choreographer$CallbackRecord.run(long) line: 749    
Choreographer.doCallbacks(int, long) line: 562  
Choreographer.doFrame(long, int) line: 532  
Choreographer$FrameDisplayEventReceiver.run() line: 735 
Handler.handleCallback(Message) line: 725   
Choreographer$FrameHandler(Handler).dispatchMessage(Message) line: 92   
Looper.loop() line: 137 
ActivityThread.main(String[]) line: 5041    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 511  
ZygoteInit$MethodAndArgsCaller.run() line: 793  
ZygoteInit.main(String[]) line: 560 
NativeStart.main(String[]) line: not available [native method]