概述
因此,我进行了扩展以在TextView中实现预计算文本。
自从迁移到Material Components Theme以来,我一直遇到错误。
这是下面的代码。
我还尝试了将所有TextViews和AppCompatTextViews迁移到MaterialTextView。但是问题仍然存在。
fun AppCompatTextView.setTextFuture(string: String?) {
val precomputedText =
PrecomputedTextCompat.getTextFuture(
string ?: "",
TextViewCompat.getTextMetricsParams(this),
null
)
textMetricsParamsCompat = precomputedText.get().params
setTextFuture(precomputedText)
text = string
}
fun AppCompatTextView.setTextFuture(charSequence: CharSequence?) {
val precomputedText =
PrecomputedTextCompat.getTextFuture(
charSequence ?: "",
TextViewCompat.getTextMetricsParams(this),
null
)
textMetricsParamsCompat = precomputedText.get().params
setTextFuture(precomputedText)
text = charSequence
}
fun AppCompatTextView.setTextFuture(stringResId: Int) {
val string = context.getString(stringResId)
val precomputedText =
PrecomputedTextCompat.getTextFuture(
string,
TextViewCompat.getTextMetricsParams(this),
null
)
textMetricsParamsCompat = precomputedText.get().params
setTextFuture(precomputedText)
text = string
}
错误如下。
Fatal Exception: java.lang.IllegalArgumentException
Given text can not be applied to TextView.
androidx.core.widget.TextViewCompat.setPrecomputedText (TextViewCompat.java:891)
androidx.appcompat.widget.AppCompatTextView.onMeasure (AppCompatTextView.java:550)
android.view.View.measure (View.java:24953)
Fatal Exception: java.lang.IllegalArgumentException
PrecomputedText's Parameters don't match the parameters of this TextView.Consider using setTextMetricsParams(precomputedText.getParams()) to override the settings of this TextView: PrecomputedText: {textSize=49.0, textScaleX=1.0, textSkewX=0.0, letterSpacing=0.03125, textLocale=[en_GB], typeface=android.graphics.Typeface@5e608edd, variationSettings=null, elegantTextHeight=false, textDir=android.text.TextDirectionHeuristics$TextDirectionHeuristicInternal@eb941bf, breakStrategy=1, hyphenationFrequency=0}TextView: {textSize=49.0, textScaleX=1.0, textSkewX=0.0, letterSpacing=0.03125, textLocale=[en_GB], typeface=android.graphics.Typeface@5e608edd, variationSettings=null, elegantTextHeight=false, textDir=android.text.TextDirectionHeuristics$TextDirectionHeuristicInternal@eb941bf, breakStrategy=1, hyphenationFrequency=0}
android.widget.TextView.setText (TextView.java:6724)
Fatal Exception: java.lang.IllegalArgumentException
PrecomputedText's Parameters don't match the parameters of this TextView.Consider using setTextMetricsParams(precomputedText.getParams()) to override the settings of this TextView: PrecomputedText: {textSize=70.0, textScaleX=1.0, textSkewX=0.0, letterSpacing=0.03125, textLocale=[en_CA], typeface=android.graphics.Typeface@ab2ab1bb, variationSettings=null, elegantTextHeight=false, textDir=android.text.TextDirectionHeuristics$TextDirectionHeuristicInternal@34fe469, breakStrategy=1, hyphenationFrequency=0}TextView: {textSize=70.0, textScaleX=1.0, textSkewX=0.0, letterSpacing=0.03125, textLocale=[en_CA], typeface=android.graphics.Typeface@ab2ab1bb, variationSettings=null, elegantTextHeight=false, textDir=android.text.TextDirectionHeuristics$TextDirectionHeuristicInternal@34fe469, breakStrategy=1, hyphenationFrequency=0}
android.widget.TextView.setText (TextView.java:6731)
我的某些TextView具有这些属性
android:ellipSize="marquee"
android:singleLine="true"
isSelected = true
最后
以上就是超级音响为你收集整理的android settext里面的参数,android 更改TextView参数后,给定文本无法应用于TextView - 糯米PHP...的全部内容,希望文章能够帮你解决android settext里面的参数,android 更改TextView参数后,给定文本无法应用于TextView - 糯米PHP...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复