微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 使用自动调整大小的约束布局基线到基线

我正在尝试按基线对齐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>

result of example code

问题是,当我使用autoSizeTextType时,layout_constraintBaseline_toBaselineOf似乎停止工作

如果有人能指出正确的方向,那就太好了.我理解错误如何使用constraintlayout?或者只是baseline_tobaseline不能用于自动调整大小?

解决方法:

我正在使用黑客来解决这个问题.

幸运的是,在我的情况下,我有两个字,所以最后我想出了类似的东西:

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)

原文地址:https://www.jb51.cc/android/1075127.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐