100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android顶部居中 如何将drawableLeft对齐到顶部 而不是在android TextView中居中?

android顶部居中 如何将drawableLeft对齐到顶部 而不是在android TextView中居中?

时间:2019-09-21 04:27:41

相关推荐

android顶部居中 如何将drawableLeft对齐到顶部 而不是在android TextView中居中?

my answer here。

您可以通过创建包装您的Drawable的自定义Drawable,然后通过覆盖方法onDraw(Canvas)来操作您的自定义Drawable的绘图来将一个复合Drawable(或底部)对齐。

以下示例是最简单的示例。这将图像与顶部对齐,但您也可以通过在onDraw(Canvas)方法中实现所需的逻辑使其与TextView的底部,左侧或右侧对齐。您可能还需要在onDraw(Canvas)中构建边距,使您的设计实现像素完美。

样品用量:

GravityCompoundDrawable gravityDrawable = new GravityCompoundDrawable(innerDrawable);

// NOTE: next 2 lines are important!

innerDrawable.setBounds(0, 0, innerDrawable.getIntrinsicWidth(), innerDrawable.getIntrinsicHeight());

gravityDrawable.setBounds(0, 0, innerDrawable.getIntrinsicWidth(), innerDrawable.getIntrinsicHeight());

mTextView.setCompoundDrawables(gravityDrawable, null, null, null);

示例代码:

public class GravityCompoundDrawable extends Drawable {

// inner Drawable

private final Drawable mDrawable;

public GravityCompoundDrawable(Drawable drawable) {

mDrawable = drawable;

}

@Override

public int getIntrinsicWidth() {

return mDrawable.getIntrinsicWidth();

}

@Override

public int getIntrinsicHeight() {

return mDrawable.getIntrinsicHeight();

}

@Override

public void draw(Canvas canvas) {

int halfCanvas= canvas.getHeight() / 2;

int halfDrawable = mDrawable.getIntrinsicHeight() / 2;

// align to top

canvas.save();

canvas.translate(0, -halfCanvas + halfDrawable);

mDrawable.draw(canvas);

canvas.restore();

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。