Android 将edge属性应用于视图寻呼机时面临顶部/底部填充问题
大家好,我正在尝试为我的视图页面赋予边缘效果,我在viewpager中使用了填充,这会导致图像顶部和底部出现空白。我已经尝试在视图页面上以及图像视图上调整图像的ViewBound和scaling属性,但没有结果。应用填充后会导致在顶部和底部填充,以保持图像的纵横比 任何形式的帮助都将不胜感激 查看寻呼机`Android 将edge属性应用于视图寻呼机时面临顶部/底部填充问题,android,android-viewpager,imageview,padding,Android,Android Viewpager,Imageview,Padding,大家好,我正在尝试为我的视图页面赋予边缘效果,我在viewpager中使用了填充,这会导致图像顶部和底部出现空白。我已经尝试在视图页面上以及图像视图上调整图像的ViewBound和scaling属性,但没有结果。应用填充后会导致在顶部和底部填充,以保持图像的纵横比 任何形式的帮助都将不胜感激 查看寻呼机` <android.support.v4.view.ViewPager android:id="@+
<android.support.v4.view.ViewPager
android:id="@+id/av_medical_case_item"
android:layout_width="match_parent"
android:layout_height="300dp"
/>
寻呼机适配器
public class AdapterSliderImage extends PagerAdapter {
public List<ModelImage> Images;
Context context;
String medical_id;
LayoutInflater mLayoutInflater;
public AdapterSliderImage(LayoutInflater mLayoutInflater, List<ModelImage> Images, Context context, String Id) {
this.mLayoutInflater = mLayoutInflater;
this.Images = Images;
this.context = context;
this._id = Id;
// this.longestImage = findLongestImage();
}
// public float getPageWidth(int position) {
// if (position == medicalImages.size()) {
// return 1f;
// }
// return .8f;
// }
@Override
public int getCount() {
if (Images != null)
return medicalImages.size();
else
return 0;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((FrameLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
View itemView = mLayoutInflater.inflate(R.layout.view_case_image, container, false);
// View view = itemView.findViewById(R.id.view);
// view.setVisibility(View.VISIBLE);
final FrameLayout frame_layout_iv = (FrameLayout) itemView.findViewById(R.id.frame_layout_iv);
final ProgressBar img_loader_icon = (ProgressBar) itemView.findViewById(R.id.img_loader_icon);
img_loader_icon.setVisibility(View.VISIBLE);
ImageView imageView = (ImageView) itemView.findViewById(R.id.iv_image);
// frame_layout_iv.setClipToPadding(false);
// frame_layout_iv.setPadding(0,0,30,0);
Picasso.with(context).load(String.valueOf(Images.get(position).base_url)).into(imageView, new Callback() {
@Override
public void onSuccess() {
img_loader_icon.setVisibility(View.GONE);
}
@Override
public void onError() {
}
});
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(context, "Image number: " + position + " clicked", Toast.LENGTH_LONG).show();
ActivityCase_.intent(context).isShowCaseSharePopup(false).isShowPublishReviewPopUp(false).case_id(id).flags(Intent.FLAG_ACTIVITY_NEW_TASK).start();
}
});
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((FrameLayout) object);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
公共类适配器SlideRimage扩展PagerAdapter{
公开列表图像;
语境;
字符串医疗标识;
放平机MLAYOUTIONFLATER;
公共适配器SlideRimage(LayoutFlater MlayoutFlater、列表图像、上下文上下文、字符串Id){
this.mLayoutInflater=mLayoutInflater;
这个。图像=图像;
this.context=上下文;
这个。_id=id;
//this.longestImage=findlonggestimage();
}
//公共浮点getPageWidth(整型位置){
//if(position==medicalImages.size()){
//返回1f;
// }
//返回.8f;
// }
@凌驾
public int getCount(){
如果(图像!=null)
返回medicalImages.size();
其他的
返回0;
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图==((框架布局)对象);
}
@凌驾
公共对象实例化项(视图组容器,最终int位置){
视图项视图=MLAYOUTINGER.FLATE(R.layout.View\u case\u图像,容器,错误);
//视图=itemView.findViewById(R.id.View);
//view.setVisibility(view.VISIBLE);
最终FrameLayout frame_layout_iv=(FrameLayout)itemView.findviewbyd(R.id.frame_layout_iv);
final ProgressBar img_loader_icon=(ProgressBar)itemviewbyd(R.id.img_loader_icon);
img_loader_icon.setVisibility(View.VISIBLE);
ImageView ImageView=(ImageView)itemView.findViewById(R.id.iv_图像);
//框架布局四.设置Cliptoppadding(假);
//框架布局四.设置填充(0,0,30,0);
Picasso.with(context).load(String.valueOf(Images.get(position.base_url))到(imageView,new Callback()中{
@凌驾
成功时的公共无效(){
img_loader_icon.setVisibility(View.GONE);
}
@凌驾
公开无效{
}
});
imageView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//Toast.makeText(上下文,“图像编号:+位置+”单击),Toast.LENGTH_LONG.show();
ActivityCase.intent(上下文)。isShowCaseSharePopup(false)。isShowPublishReviewPopUp(false)。case_id(id)。flags(intent.FLAG_ACTIVITY_NEW_TASK)。start();
}
});
container.addView(itemView);
返回项目视图;
}
@凌驾
公共项(视图组容器、int位置、对象){
container.removeView((FrameLayout)对象);
}
@凌驾
public int getItemPosition(对象){
返回位置\无;
}
}
适配器的布局类
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id ="@+id/frame_layout_iv"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/img_loader_icon"
style="?android:attr/progressBarStyleLarge"
android:layout_width="34dp"
android:layout_height="34dp"
android:layout_gravity="center" />
<ImageView
android:id="@+id/iv_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:paddingEnd="30dp"
android:contentDescription="fdg" />
<!--<View-->
<!--android:id = "@+id/view"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:background="@color/brand_light_green"/>-->
</FrameLayout>
viewpager的实现
final ProgressBar pb_thumbnail_img = (ProgressBar) findViewById(R.id.pb_thumbnail_img);
av_item.setVisibility(VISIBLE);
iv_item_adjustable_view.setVisibility(GONE);
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
List<ModelImage> ImageList = card.getImages();
int max_height = 0 ;
ModelImage longestImage = null;
for (ModelImage image :ImageList ) {
int height = image.getHeight();
if (max_height < height) {
max_height = height;
longestImage = image;
}
}
ImageList.remove(longestImage);
ImageList.add(0, longestImage);
final int orig_height = longestImage.getHeight();
final int orig_width = longestImage.getWidth();
av_case_item.setBackgroundColor(getResources().getColor(R.color.white));
av_case_item.post(new Runnable() {
@Override
public void run() {
int req_width = av_case_item.getMeasuredWidth();
int req_height = req_width * orig_height / orig_width;
av_medical_case_item.setLayoutParams(new FrameLayout.LayoutParams(ViewPager.LayoutParams.MATCH_PARENT, req_height));
// av_medical_case_item.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
}
});
AdapterSlider Image case_image_slider_adapter = new =AdapterSliderImage(inflater, ImageList,getContext(),card.getItem_id());
//
av_case_item.setAdapter(case_image_slider_adapter);
av_case_item.setClipToPadding(false);
av_case_item.setPadding(0, 0, 60, 0); `
final ProgressBar-pb\u-thumboil\u-img=(ProgressBar)findViewById(R.id.pb\u-thumboil\u-img);
av_项目设置可见性(可见);
iv_项目_可调_视图。设置可见性(消失);
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
List ImageList=card.getImages();
int max_height=0;
ModelImage longestImage=null;
用于(模型图像:图像列表){
int height=image.getHeight();
如果(最大高度<高度){
最大高度=高度;
长图像=图像;
}
}
ImageList.remove(长图像);
添加(0,longestImage);
final int orig_height=longestImage.getHeight();
final int orig_width=longestImage.getWidth();
av_case_item.setBackgroundColor(getResources().getColor(R.color.white));
av_case_item.post(新的可运行(){
@凌驾
公开募捐{
int req_width=av_case_item.getMeasuredWidth();
int req_高度=req_宽度*起始高度/起始宽度;
av_medical_case_item.setLayoutParams(新的FrameLayout.LayoutParams(ViewPager.LayoutParams.MATCH_父项,要求高度));
//av_medical_case_item.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
}
});
AdapterSlider图像盒\u图像\u滑块\u适配器=新建=适配器SlideRimage(充气机、图像列表、getContext()、card.getItem\u id());
//
av_case_item.setAdapter(case_image_slider_adapter);
av_case_item.setcliptoppadding(false);
av_case_item.setPadding(0,0,60,0)`