2017-04-14 72 views
1

实际显示时,它的高度应该是三排,但只有两排?为什么setBackground与Drawable不能完全填充

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

回答

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

+1

酷!有用!谢谢!!! –

+0

@Mike_ShangJun如果答案的工作,那么你可以接受答案http://stackoverflow.com/help/someone-answers –

+0

另请参阅:https://developer.android.com/reference/android/widget/ImageView.ScaleType。 HTML –

1

您使用像素,,,试试这个

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

谢谢您的回答,但它不能正常工作( –