/**
* Makes any compound drawables associated with this textview draw closer to the text.
* @param button
*/
public static void setTightCompoundDrawables(final TextView button){
if(button!=null) button.post(new Runnable(){
@Override
public void run() {
final Drawable[] existingDrawables = button.getCompoundDrawables();
int width = button.getWidth();
String text = button.getText().toString();
TransformationMethod meth = button.getTransformationMethod();
if (meth!=null ){
//the text returned from getText() may be transformed before it is drawn. IE if textAllCaps is set in XML,
//The text will be subsequently transformed, changing its width. So apply the transformation if available.
text = meth.getTransformation(button.getText(), button).toString();
}
float textWidth = button.getPaint().measureText(text);
float padding=-1;
if(existingDrawables[0]!=null && existingDrawables[2]!=null){
//d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
padding=(width-textWidth-existingDrawables[0].getBounds().width()-existingDrawables[2].getBounds().width()-scale(SPACING_PX))/2f;
}
else if(existingDrawables[0]!=null ){
//d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
padding=(width-textWidth-existingDrawables[0].getBounds().width()-scale(SPACING_PX))/2f;
}
else if(existingDrawables[2]!=null ){
//d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
padding=(width-textWidth-existingDrawables[2].getBounds().width()-scale(SPACING_PX))/2f;
}
//no drawables, or text too wide for view
if(padding<=0 || padding>(width/2f)) padding = scale(SPACING_PX);
//button.setCompoundDrawables(existingDrawables[0], existingDrawables[1], existingDrawables[2], existingDrawables[3]);
button.setPadding((int)(padding+0.0), button.getPaddingTop(), (int)(padding+0.0), button.getPaddingBottom());
}
});
}
UIUtil.java 文件源码
java
阅读 30
收藏 0
点赞 0
评论 0
项目:connectedteam-android
作者:
评论列表
文章目录