问题描述
- layoutparams设置宽度和高度填充父容器无效啊
-
在initData()对list集合添加imageview的时候发现我设置的imageView的宽和高无效
谢谢了 帮帮小白的我
布局文件<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom" android:orientation="horizontal" android:padding="20dp" > <ImageView android:id="@+id/img_choose1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_choose" /> <ImageView android:id="@+id/img_choose2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> <ImageView android:id="@+id/img_choose3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> <ImageView android:id="@+id/img_choose4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> <ImageView android:id="@+id/img_choose5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> <ImageView android:id="@+id/img_choose6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> <ImageView android:id="@+id/img_choose7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> <ImageView android:id="@+id/img_choose8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> <ImageView android:id="@+id/img_choose9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/page_unchoose" /> </LinearLayout> </FrameLayout>
MainActivity
package com.example.viewpager; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.app.Activity; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; public class MainActivity extends Activity { private List<View> list_image = new ArrayList<View>(); private ViewPager pager; private int img[] = { R.drawable.beauty1, R.drawable.beauty2, R.drawable.beauty3, R.drawable.beauty4, R.drawable.beauty5, R.drawable.beauty6, R.drawable.beauty7, R.drawable.beauty8, R.drawable.beauty9 }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pager = (ViewPager) findViewById(R.id.pager); initData(); MyViewPagerAdapter adapter = new MyViewPagerAdapter(list_image); pager.setAdapter(adapter); } private void initData() { // TODO Auto-generated method stub for (int i : img) { ImageView imageView = new ImageView(this); //这里无效啊 怎么办。。 //想设置图片填充容器的。 LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); imageView.setImageResource(i); imageView.setLayoutParams(params); list_image.add(imageView); } } }
MyViewPagerAdapter
package com.example.viewpager; import java.util.ArrayList; import java.util.List; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; public class MyViewPagerAdapter extends PagerAdapter{ private List<View> list_image = new ArrayList<View>(); public MyViewPagerAdapter(List<View> list_image){ this.list_image=list_image; } @Override public int getCount() { // TODO Auto-generated method stub return list_image.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub container.addView(list_image.get(position)); return list_image.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub container.removeView(list_image.get(position)); } }
解决方案
其实你的设置是有效的,只是图片尺寸不对。你仔细看下上面的两张图片,要么宽充满屏幕,要么高充满屏幕了。你的问题是在循环的时候没有设置imageView的缩放。
添加下面这句代码就OK了。
imageView.setScaleType(ScaleType.FIT_XY);
解决方案二:
ImageView有ImageView的宽高, 图片Bitmap有自己的宽高,按照图片的显示方式,当ImageView要显示图片时,内部的算法进行判断宽高,对Bitmap进行缩放处理,所以 有白边, 如果你要做引导图片的话,就要美工专门切图片
解决方案三:
可能要设置ScaleType。
imageView.contentMode = UIViewContentMode.ScaleAspectFill
解决方案四:
试试在布局文件中设置setScalType(FIT_XY),这样看能不能解决!
解决方案五:
试试在布局文件中设置setScalType(FIT_XY),这样看能不能解决!
时间: 2024-09-07 03:20:03