无论如何,我不确定如何命名标题。我目前正在将带有 TabLayout
的 ViewPager
膨胀到这样的对话框中:
case R.id.btnInfo:
Dialog dialogpager;
dialogpager = new Dialog(MyActivity.this);
dialogpager.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialogpager.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogpager.setContentView(R.layout.dialog_viewpager);
dialogpager.setCanceledOnTouchOutside(false);
MyPageAdapter adapter = new MyPageAdapter(MyActivity.this);
ViewPager pager = (ViewPager) dialogpager.findViewById(R.id.viewpager);
pager.setOffscreenPageLimit(3);
pager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) dialogpager.findViewById(R.id.mTab_ID);
tabLayout.setTabTextColors(ContextCompat.getColorStateList(getApplicationContext(), R.color.black));
tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.plus_sign_color));
tabLayout.setupWithViewPager(pager);
tabLayout.addOnTabSelectedListener(listener(pager));
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = dialogpager.getWindow();
lp.copyFrom(window.getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lp);
dialogpager.show();
return;
default:
这是我的适配器:
public class MyPageAdapter extends PagerAdapter {
Context mContext;
int resId = 0;
private String tabTitles[] = new String[]{"Controls", "Video Export", "Image Export"};
public MyPageAdapter(Context context) {
mContext = context;
}
public Object instantiateItem(ViewGroup collection, int position) {
LayoutInflater inflater = LayoutInflater.from(mContext);
switch (position) {
case 0:
resId = R.layout.information_fragment_1;
break;
case 1:
resId = R.layout.information_fragment_2;
break;
case 2:
resId = R.layout.information_fragment_3;
break;
}
ViewGroup layout = (ViewGroup) inflater.inflate(resId, collection, false);
collection.addView(layout);
return layout;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
这工作正常,但问题是我在每个布局中(在 ImageView
内)显示大图像,导致内存不足问题。我想使用像 piccaso 这样的库,但是如果我只是膨胀 View /布局,我该如何使用 picasso 设置图像?
最佳答案
那么,您正在此处创建布局:
ViewGroup layout = (ViewGroup) inflater.inflate(resId, collection, false);
collection.addView(layout);
return layout;
所以您只需要获取您的 ImageView
实例并将适当的图像加载到其中。
例如:
ViewGroup layout = (ViewGroup) inflater.inflate(resId, collection, false);
ImageView imageView = (ImageView) layout.findViewById(R.id.id_of_your_imageview);
Picasso.with(mContext).load(R.drawable.id_of_your_image_resource).into(imageView);
collection.addView(layout);
return layout;
如果您最初在布局 XML 中静态设置图像,请不要忘记删除那些 android:src
属性(因为您将从代码中动态设置它们)。
关于java - 如何使用 Picasso 在 Android 的 ViewPager 中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49195106/