为什么setBackground与Drawable无法完全填充

时间:2017-04-14 09:42:22

标签: android

实际显示,它的高度应该是三行,但只有两行?

myView = new ImageView(mContext) //or new TextView();
int height = 128 * 3;
int width = 128;
RelativeLayout.LayoutParams layoutParams;
layoutParams = new RelativeLayout.LayoutParams(width, height);
layoutParams.setMargins(xxx, xxx);
myView.setBackground(xxx);

enter image description here

2 个答案:

答案 0 :(得分:1)

你正在使用像素,,,试试这个

final float scale = getResources().getDisplayMetrics().density;
int height = (int) 128 * 3 * scale;
int width = (int) 128 * scale;

答案 1 :(得分:0)

尝试:

layoutParams = new RelativeLayout.LayoutParams
(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

myView.setScaleType(ImageView.ScaleType.FIT_XY);

完整代码:

ImageView myView = new ImageView(this);
        //int height = 128 * 3;
        //int width = 128;
        RelativeLayout.LayoutParams layoutParams;
        layoutParams = new RelativeLayout.LayoutParams
(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

        layoutParams.setMargins(1, 1, 1, 1);
        myView.setScaleType(ImageView.ScaleType.FIT_XY);
        myView.setBackground(getDrawable(R.drawable.art_clouds));


        RelativeLayout relativeLayout=new RelativeLayout(this);
        relativeLayout.setLayoutParams(layoutParams);
        relativeLayout.addView(myView);
        setContentView(relativeLayout);

另见:

https://developer.android.com/reference/android/widget/ImageView.ScaleType.html