0
我试图实现一个画廊,每个单元格是一个片段。碎片画廊
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" />
getView()GalleryAdapter的(延伸BaseAdapter):
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
mHolder = new ViewHolder();
mFrameLayout = (FrameLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.gallery_item, null);
mFrameLayout.setPadding(25,0,25,0);
//Add fragment to frame layout
mFragmentManager.beginTransaction().add(mFrameLayout.getId(), new CardFrontFragment()).commit();
convertView = mFrameLayout;
mHolder.frameLayout = mFrameLayout;
convertView.setTag(mHolder);
}
else
{
mHolder = (ViewHolder) convertView.getTag();
}
mHolder.frameLayout.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.MATCH_PARENT, Gallery.LayoutParams.MATCH_PARENT));
return mFrameLayout;
}
private static class ViewHolder {
FrameLayout frameLayout;
}
它的工作,但问题是,所谓的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]
10倍了很多!
片段不旨在用作回收它们的视图中的子项。我建议你重新考虑你当前的逻辑并避免使用片段作为该图库的子元素(你应该避免使用它,因为它已被弃用)。 – Luksprog 2013-05-06 07:45:07
10x @Luksprog。我知道Gallery已被弃用,但仍无法找到任何替代Gallery的效果,从左侧和右侧显示部分项目,您有什么建议吗? – David 2013-05-06 09:19:24
不幸的是,我不知道一个图书馆作为一个画廊更换推荐。 – Luksprog 2013-05-06 12:49:31