2013-11-21 59 views
2

我需要使TextView與背景圖像(9patch)的長寬比保持不變。所以我用下面的代碼在我的活動: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

問題是因爲即使在拉伸之後圖像的頂部填充不斷變化。當android垂直拉伸圖像時,它會保持頂部填充值。因此,如果填充區域不在拉伸區域,它會增加,但不會拉伸。

此問題描述爲here