2017-04-24 28 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

啊,沒有嘗試過。我不明白它的作用。編輯:沒有做任何事情:( –