我正在尝试按基线对齐2个文本视图,并同时使用autosize进行文本化。 这是简化的代码示例。第一个textview的大小很大,因此textize auto设置为一些很大的值。第二个textview小于第一个textview,因此它具有较小的自动确定的文本大小。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/text1"
android:layout_width="200dp"
android:layout_height="100dp"
android:text="text1"
android:maxLines="1"
android:autoSizeTextType="uniform"
android:autoSizeMaxTextSize="200sp"
android:autoSizeMinTextSize="2sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/text2"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/text2"
android:layout_width="50dp"
android:layout_height="20dp"
android:text="text2"
android:maxLines="1"
android:autoSizeTextType="uniform"
android:autoSizeMaxTextSize="200sp"
android:autoSizeMinTextSize="2sp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toRightOf="@+id/text1"
app:layout_constraintBaseline_toBaselineOf="@id/text1"/>
</android.support.constraint.ConstraintLayout>
问题是,一旦我使用autoSizeTextType,layout_constraintBaseline_toBaselineOf就会停止工作
如果有人可以指出正确的方向,那就太好了。我理解错误如何使用constraintlayout?或者只是baseline_tobaseline不适用于autosize?
答案 0 :(得分:2)
我正在使用hack解决这个问题。
幸运的是,我有两个词,所以最后我想到了类似的东西:
private fun getCorrectTextValue(value: Number): SpannableString {
val currency = getString(R.string.common_currency)
val formatter = NumberFormat.getInstance(Locale.getDefault())
val ss = SpannableString("${formatter.format(value)} $currency")
ss.setSpan(AbsoluteSizeSpan(resources.getDimensionPixelSize(R.dimen.max_text_size)), value.toString().length, value.toString().length + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
return ss
}
对我有用
可能您可以使用SpannableString添加空格字符,并使用以下命令设置其高度:
ss.setSpan(AbsoluteSizeSpan(resources.getDimensionPixelSize(R.dimen.max_text_size)), value.toString().length, value.toString().length + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
答案 1 :(得分:2)
我将其修复如下:
科特林:
text1.text = "This is text text text text"
text1.post{
text1.requestLayout()
}
答案 2 :(得分:1)
尝试从textview中删除autoSize
并设置TextView
文字大小。事情将开始自行解决。至少这对我有用。
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:maxLines="1"
android:text="text1"
android:textSize="100sp"
app:layout_constraintEnd_toStartOf="@+id/text2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text2"
android:layout_width="50dp"
android:layout_height="20dp"
android:text="text2"
android:maxLines="1"
android:autoSizeTextType="uniform"
android:autoSizeMaxTextSize="200sp"
android:autoSizeMinTextSize="2sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/text1"
app:layout_constraintBaseline_toBaselineOf="@id/text1"
/>