ViewPager中的ImageView无法获得正确的高度

时间:2017-04-24 13:47:41

标签: android imageview

我有一个包含userEntries的列表。这些条目中的每一个都包含一个块,其中我有一些动态内容,在这种情况下是一个包​​含1-3个图像的viewpager。当我希望这些图像具有正确的高度时,我的问题就来了。如果我将ViewPager高度设置为例如100dp,则会显示图像,并且ViewPager将按预期工作。但是,如果我旋转手机或使用更大的屏幕,图像保持相同的宽度,因为100dp限制它获得正确的宽度。当发生这种情况时,我想使用wrap_content,因此它调整其高度以便将图像填充到其全宽,但是当我这样做时,布局被最小化。请参阅下面的屏幕和代码。

  

CustomViewHolder.java < - 这包含userentry

public void populateContentArea(int mListType, Context context){
    switch (mListType){
        case Constants.ListType.DATE_LIST:
            DatingEntryModel dateUser = (DatingEntryModel)mUser;
            LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View datingContent = layoutInflater.inflate(R.layout.dating_picture_container, llUserEntryContent, true);
            ViewPager datingPager = (ViewPager) datingContent.findViewById(R.id.datingPager);
            datingPager.setAdapter(new DatingPictureAdapter(context, dateUser.activities));
            TabLayout datingIndicator = (TabLayout) datingContent.findViewById(R.id.datingTabDots);
            datingIndicator.setupWithViewPager(datingPager);
            break;
        default:
            break;
    }
}
  

dating_picture_container.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v4.view.ViewPager
        android:id="@+id/datingPager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <android.support.design.widget.TabLayout
        android:id="@+id/datingTabDots"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_width="70dp"
        android:layout_height="20dp"
        app:tabIndicatorHeight="0dp"
        app:tabPaddingBottom="10dp"
        app:tabBackground="@drawable/tab_dot_selector"
        app:tabGravity="center"/>

</RelativeLayout>
  

DatingPictureAdapter.java

public class DatingPictureAdapter extends PagerAdapter {
        private Context mContext;
        List<DatingActivity> mActivities;

        public DatingPictureAdapter(Context context, List<DatingActivity> activities) {
            mContext = context;
            mActivities = activities;
        }

        @Override
        public Object instantiateItem(ViewGroup collection, int position) {
            DatingActivity activity = mActivities.get(position);
            final ImageView datingBanner = new ImageView(mContext);
            datingBanner.setAdjustViewBounds(true);
            datingBanner.setScaleType(ImageView.ScaleType.FIT_CENTER);
            UrlManager.loadDatingBannerGlide(mContext, activity.id).into(datingBanner);
            collection.addView(datingBanner, 0);
            return datingBanner;
        }

        @Override
        public int getCount() {
            return mActivities.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public void destroyItem(ViewGroup collection, int position, Object view) {
            collection.removeView((View) view);
        }
    }

ImageView and ViewPager working but width wont resize as height is hardcoded

ImageView gone with wrap_content

  

在一天结束时,将高度静态设置为10dp然后根据图像宽度调整大小对我来说是最好的解决方案。感谢所有回复:)

2 个答案:

答案 0 :(得分:0)

我认为你有两种方法可以做到这一点: 1-如果要使用具有不同方向的不同布局,则必须为每个方向创建一个布局 2-你可以通过编程获得显示的高度,并将内部布局与二维比例高度

我希望这可以帮到你

答案 1 :(得分:0)

我认为这是因为你设置了ViewPager's身高&#34; wrap_content&#34; wrap_content不适用于ViewPager。如果您将其更改为match_parent或静态dp,则您的问题将得到解决。

<android.support.v4.view.ViewPager
        android:id="@+id/datingPager"
        android:layout_width="match_parent"
        android:layout_height="144dp"/>