我有一个包含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);
}
}
在一天结束时,将高度静态设置为10dp然后根据图像宽度调整大小对我来说是最好的解决方案。感谢所有回复:)
答案 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"/>