我要做的是一个ListView。该ListView使用适配器来膨胀只包含一个ViewPager的RelationVelayOut。
public Object instantiateItem(View collection, int position) {}
view.measure(MeasureSpec.makeMeasureSpec(widthMeasureSpecSize, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(heightMeasureSpecSize, MeasureSpec.UNSPECIFIED));
((Pager) collection).requestedHeight = view.getMeasuredHeight();
heightMeasureSpecSize实际上是listView适配器之前设置的一个公共属性。SetAdapter称为((Pager)collection)。RequestEdHeight是我扩展ViewPager时在它本身上设置的另一个属性。在将值设置为它之前,它的默认值为100。然后,我重写了onMeasure方法,如下所示:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
super.onMeasure(widthMeasureSpec, View.MeasureSpec.makeMeasureSpec(requestedHeight, View.MeasureSpec.AT_MOST));
}
使用所有这些代码,当我运行应用程序时,每当在ViewPager上调用onMeasure时,ListView似乎会将ViewPager添加到带有100的列表中,然后使用onMeasure重新计算,并使用View Pager的第一个子级的MeasurdHeight重新绘制项....
所有这些都是因为wrap_content在ViewPager中被破坏。还有比这更好的方法吗?它似乎效率很低。
这是我的解决方案:
ViewTreeObserver viewTreeObserver = mViewPager.getViewTreeObserver();
viewTreeObserver
.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
int viewPagerWidth = mViewPager.getWidth();
float viewPagerHeight = (float) (viewPagerWidth * FEATURED_IMAGE_RATIO);
layoutParams.width = viewPagerWidth;
layoutParams.height = (int) viewPagerHeight;
mViewPager.setLayoutParams(layoutParams);
mViewPager.getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
}
});
我测量然后调整高度。希望能有所帮助。
我知道很多文章描述了如何使listView项的展开/折叠动画化,但我就是无法使其工作:-( 我有一个listView,其中每个项目都包含一个隐藏的LinearLayout元素ll(view.gone),我希望使用动画展开/折叠ll。我的问题是--显然--LL的高度可变。ll的高度设置为wrap_content,因为它包含一个描述和一些图像。 我所看到的挑战是,我一开始就把LL的生存能力设定为.消失
我有一块碎片。加载的视图的onCreateView方法上的这个片段有一个ListView(a)(在适配器(a)中填充)。但是,此ListView(A)中有另一个ListView(B)。所以现在,我必须调用适配器(B)来填充这个listview(B)。如果我从片段调用它,我会得到一个空指针,如果我从适配器调用它(a),它不会崩溃,但不会工作。 如何调用另一个适配器中的适配器。 这是片段的代码: 其中
问题内容: 我有一些碎片。每个片段具有在(=挥动之前不可见的)用。 适配器设置为,这会减慢刷卡速度,因为每次创建时都要载入30个列表项,因为正在创建新的片段。 我的问题是,在空闲时刷卡后是否可以设置适配器?或者,还有更好的方法?扩展SlideDrawer时,该列表需要已经加载。 问题答案: 我的问题是,是否可以在Pager闲置时刷卡后设置适配器? 还有就是,你可以在设置监控的滑动手势。然后,您可以
Postman支持设置环境变量,并在例如标题中使用它们。 考虑以下示例: 令牌endpoint需要基本标头: 所有其他endpoint都需要承载标头: 目前,我需要完成以下所有步骤,这非常烦人: 调用 从响应中手动复制令牌 转到<code>设置 是否有一种方法可以在每次调用时自动更新环境变量,或者至少始终显示当前环境变量的列表,以便我可以手动更新值,而无需转到
我有一个AsyncTask,在其中我创建了一个ViewPager,当我为它分配了一个适配器时,会出现这个错误 JAVAlang.IllegalStateException:带有适配器com的ViewPager。实例科斯。PagerAdapterZvon@646addd在androidx处需要视图id。碎片应用程序。碎裂翼翅。androidx上的startUpdate(FragmentPagerAd
ExpansionTile从ListTile继承,ListTile具有固定的高度。没有瓷砖高度的输入arg。 我尝试用一个硬编码高度将ExpansionTile包装在容器小部件中,但这导致子小部件只占用硬编码高度内的空间。目前,由于小部件中的内容很大,我有一条“Column Overflow by 23 pixels”消息。