TextView中的文本从9个补丁填充边框中抽出

时间:2013-11-21 11:26:42

标签: android textview nine-patch

我需要将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的中心而不是底部,填充边框位于底部。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

问题是因为即使在拉伸后图像也会持续顶部填充。当android垂直拉伸图像时,它保持顶部填充值。因此,如果填充区域不在拉伸区域,它会增加,但根本不会拉伸。

此问题已在here

中说明