2017-04-24 95 views
0

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

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和然后调整根据图像宽度对我来说是最好的解决方案。感谢所有答复:)

+0

你的视图页面的项目xml文件在哪里? –

+0

我已经尝试过使用XML文件并将ImageView充满,但它产生了与创建ImageView并添加到viewpager相同的结果,所以我只是认为它是很多代码,它只是通过将ImageView添加到ViewPager。 –

回答

0

我想这是因为你设置你的ViewPager's高度“wrap_contentwrap_content不会为ViewPager工作。如果您将其更改为match_parent或静态dp,则您的问题将被修复。

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

好吧,我不知道wrap_content没有工作ViewPager。谢谢。但我知道它通过设置硬编码高度起作用,但是在不同的屏幕尺寸下它看起来非常糟糕,所以我需要通过获取图像的高度来动态设置高度,我必须尝试一些不同的方法和Ill看看我能否得到它的工作:)。 –

+0

您可以针对不同的屏幕尺寸使用不同的xml尺寸。我建议你使用不同尺寸和scaleType中心的静态高度。 – savepopulation

0

我认为你有2种方法来做到这一点: 1,如果你想用型动物不同方向的布局,则必须为每个方向 2 - 你可以得到progammatically创建一个布局让显示器的高度,并把布局dinamically比例高度内

我希望这会帮助你

+0

当我尝试以编程方式更改高度时,没有任何更改,并且我在xml中设置了正确的方向。我看到了RelativeLayout上的垂直方向,我认为这不应该是需要的;)。感谢您将一些想法投入到此:) –

+0

别的东西,你可以尝试以编程方式设置重量属性,这是部件的比例属性 – soissy

+0

啊,没有尝试过。我不明白它的作用。编辑:没有做任何事情:( –