使用FragmentStatePagerAdapter查看寻呼机加载片段,动态加载数据,即每个片段都有不同的数据,因此每个片段的高度需要根据单个片段的内容进行调整。 我试过的方法: 如果在PageAdapter的instantiateItem中设置标签(位置):
@Override
public Object instantiateItem(ViewGroup collection, int page) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = (View) inflater.inflate(R.layout.page_item , null);
view.setTag(page);
//此R.layout.page_item是所有片段正在使用的视图寻呼机项目内容的布局。 然后可以使用OnPageChangeListener检索视图(适配器的页面),测量它,并调整ViewPager的大小:
private ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
pager = findViewById(R.id.viewpager);
pager.setOnPageChangeListener(new SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
resizePager(position);
}
});
public void resizePager(int position) {
View view = pager.findViewWithTag(position);
if (view == null)
return;
view.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
//The layout params must match the parent of the ViewPager
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width , height);
pager.setLayoutParams(params);
}
}
使用此方法,高度会发生变化,但我面临的问题是: 当我第一次打开包含视图寻呼机的活动时,第一项视图寻呼机的高度没有改变,但是从第二项高度变化开始,当我在视图寻呼机中向后滑动时,第一项高度越来越高改变。
问题-2: My View寻呼机位于relativeLayout内部 - 相对布局的高度和宽度 - 匹配父级 ViewPager的高度和宽度---高度 - 包含内容(虽然视图寻呼机不支持包含内容),宽度与父级匹配。
查看寻呼机内容片段的布局 -
<Relative layout height=wrap-content,width=matchparent>
<Scroll-view height=match parent,width=matchparent>
<LinearLayout height,width=wrap-content/></ScrollView></relativeLayout>
从第二个元素的高度变化,但不知道它为什么占据整个页面,但它变得比以前更大。
请根据内容大小设置视图寻呼机高度,如果我的方法有误,请告诉我如何根据内容大小设置高度。
我已经解决了第二个视图分页器中布局变大的一个问题,内容片段的布局存在一些问题。但是第一次查看寻呼机加载第一个项目时,寻呼机页面高度没有得到改变,从第二项开始高度变化正确
答案 0 :(得分:-1)
在您的布局文件中,所有视图的所有高度属性必须为&#34; wrap_content&#34;。
<RelativeLayout
height=wrap-content
width=match_parent>
<Scroll-view
height=wrap-content
width=matchparent>
<LinearLayout
height = "wrap_content"
width=wrap-content/>
</ScrollView>