gpt4 book ai didi

android - TextInputEditText - CompoundDrawable 未居中

转载 作者:行者123 更新时间:2023-11-30 05:07:11 28 4
gpt4 key购买 nike

我试图通过创建一个 TextDrawable 然后使用 compoundDrawable 设置它来为我的 TextInputEditText 添加一个后缀。一切都进行得相当顺利,除了可绘制对象被剪裁到组件右侧之外。是什么原因造成的?到目前为止,我尝试过更改字体大小,但这没有任何区别...是可绘制对象太宽还是什么?

enter image description here

字符串是 "kr/månad",如您所见,它被剪裁了..

XML

<android.support.design.widget.TextInputLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_input_layout"
style="@style/TextInputLayoutStyle"
android:theme="@style/TextInputLayoutTheme">

<android.support.design.widget.TextInputEditText
android:id="@+id/text_input_edit_text"
style="@style/TextInputEditTextStyle" />

</android.support.design.widget.TextInputLayout>

组件代码

  textInputEditText.setCompoundDrawables(null, null, TextDrawable(unitText), null)

文本可绘制

class TextDrawable(private val text: String?) : Drawable() {

private val paint: Paint

init {
paint = Paint()
paint.color = Color.BLACK
paint.textSize = 44f
paint.isAntiAlias = true
paint.isFakeBoldText = true
paint.typeface = Typeface.create("sans-serif-light", Typeface.NORMAL)
paint.style = Paint.Style.FILL
paint.textAlign = Paint.Align.CENTER
}

override fun draw(canvas: Canvas) {
text?.let { text ->
canvas.drawText(text, 0f, 0f, paint)
}
}

override fun setAlpha(alpha: Int) {
paint.alpha = alpha
}

override fun setColorFilter(cf: ColorFilter?) {
paint.colorFilter = cf
}

override fun getOpacity(): Int {
return PixelFormat.TRANSLUCENT
}
}

最佳答案

试试这段代码:

class TextDrawable(private val text: String?) : Drawable() {

private val paint = Paint().apply {
color = Color.BLACK
textSize = 44f
isAntiAlias = true
isFakeBoldText = true
typeface = Typeface.create("sans-serif-light", Typeface.NORMAL)
style = Paint.Style.FILL
setBounds(0, 0, measureText(text).toInt(), 0)
}

override fun draw(canvas: Canvas) {
text?.let { text ->
canvas.drawText(text, 0f, 0f, paint)
}
}

override fun setAlpha(alpha: Int) {
paint.alpha = alpha
}

override fun setColorFilter(cf: ColorFilter?) {
paint.colorFilter = cf
}

override fun getOpacity(): Int {
return PixelFormat.TRANSLUCENT
}
}

区别在于两行。我删除了这个

paint.textAlign = Paint.Align.CENTER  

并添加了这个:

setBounds(0, 0, measureText(text).toInt(), 0)  

Code Result

关于android - TextInputEditText - CompoundDrawable 未居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54361768/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com