我正在创建一个TextView
可以像这样在两端绘制文本的自定义,并且它支持多行,因此文本视图的数量可以减少到一半(我收到一个 lint 警告,抱怨 80 多个视图,并且大多数视图是我布局中的 TextViews,例如在网格布局中添加的名字、姓氏)
请看屏幕截图,这是视图的当前状态
当高度固定时它会显示文本,我不希望这种行为,因为右边的文本可以是任何长度,它应该将高度包装到所需的高度。这是被覆盖的onMeasure
方法
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mRightText == null) return;
initStaticLayout();
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), mLayout.getHeight());
}
mLayout
是一个StaticLayout
private void initStaticLayout() {
if (mLayout == null) {
mLayout = new StaticLayout(mRightText, mPaint,
getWidth() / 2 - getPaddingRight() - getPaddingLeft(),
Layout.Alignment.ALIGN_NORMAL,
1, 0, true);
}
}
如果高度设置为wrap_content
它不绘制任何东西。