我需要将TextView的长宽比与背景图像(9patch)保持一致。所以我在我的活动中使用了以下代码:
@Override
public void onResume() {
super.onResume();
// adding contact image resize callback for adjusting image height
findViewById(R.id.contactText).getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// aspect ratio
float resizeRatio = 1.13f;
// getting contact frame
TextView contactView = (TextView) findViewById(R.id.contactText);
ViewGroup.LayoutParams layout = contactView.getLayoutParams();
// resizing contact text
layout.height = (int) (contactView.getWidth() * resizeRatio);
contactView.setLayoutParams(layout);
contactView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
}
此代码执行我所期望的 - TextView已调整大小。但是九个补丁中描述的文本边框(填充)来自未调整大小的图像。因此,文本显示在TextView的中心而不是底部,填充边框位于底部。
如何解决这个问题?
答案 0 :(得分:1)
问题是因为即使在拉伸后图像也会持续顶部填充。当android垂直拉伸图像时,它保持顶部填充值。因此,如果填充区域不在拉伸区域,它会增加,但根本不会拉伸。
此问题已在here
中说明