使用fragmentstatepageradapter查看寻呼机无法根据个别目标的内容设置高度

时间:2015-05-19 08:14:37

标签: android android-viewpager

使用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>

从第二个元素的高度变化,但不知道它为什么占据整个页面,但它变得比以前更大。

请根据内容大小设置视图寻呼机高度,如果我的方法有误,请告诉我如何根据内容大小设置高度。

我已经解决了第二个视图分页器中布局变大的一个问题,内容片段的布局存在一些问题。但是第一次查看寻呼机加载第一个项目时,寻呼机页面高度没有得到改变,从第二项开始高度变化正确

1 个答案:

答案 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>