Android AutoResizeTextView - 调整大小后关闭垂直重力
Android AutoResizeTextView - Vertical Gravity off after resize
我正在使用此处找到的 AutoResizeTextView class。 Auto Scale TextView Text to Fit within Bounds 效果很好。但是,我在 RelativeLayout 中有 textview,并且我将 TextView 上的 layout_centerVertical 属性 设置为 true。效果很好,除非 TextView 不适合并自行调整大小。然后文本不再在 RelativeLayout 中垂直居中。
我猜这是因为垂直对齐是在 TextView 调整大小之前执行的。
我该如何解决这个问题?有没有办法在调整文本大小后重新触发View的重力对齐?
布局示例
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<com.mypackage.android.AutoResizeTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some Text Here"
android:maxLines="1"
android:ellipsize="end" />
</RelativeLayout>
尝试在
中也触发 resizeText()
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// trigger here
}
//This is called during layout when the size of this view has changed
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// trigger here
}
我正在使用此处找到的 AutoResizeTextView class。 Auto Scale TextView Text to Fit within Bounds 效果很好。但是,我在 RelativeLayout 中有 textview,并且我将 TextView 上的 layout_centerVertical 属性 设置为 true。效果很好,除非 TextView 不适合并自行调整大小。然后文本不再在 RelativeLayout 中垂直居中。
我猜这是因为垂直对齐是在 TextView 调整大小之前执行的。
我该如何解决这个问题?有没有办法在调整文本大小后重新触发View的重力对齐?
布局示例
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<com.mypackage.android.AutoResizeTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some Text Here"
android:maxLines="1"
android:ellipsize="end" />
</RelativeLayout>
尝试在
中也触发 resizeText()@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// trigger here
}
//This is called during layout when the size of this view has changed
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// trigger here
}