需求:Button宽度为match_parent,因此宽度不定,但要根据背景图片的长宽比来调整Button大小使其适应背景图。
之前采用的方法是OnGlobalLayoutListener, 不过这样会导致同一个页面的EditText在修改文字时不改变文字。
Button completeButton = (Button)findViewById(R.id.completeButton);
completeButton.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener()
{
public void onGlobalLayout()
{
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.button_long);
double ratio = ((double)bitmap.getHeight()) / bitmap.getWidth();
ViewGroup.LayoutParams params = completeButton.getLayoutParams();
params.height = (int)(completeButton.getWidth() * ratio);;
completeButton.setLayoutParams(params);
}
});
DisplayMetrics metrics