可是孟婆她断了我的桥。
需求:EditText的字体大小18sp,hint文本字体大小为10sp。
EditText设置hint文本的size。由于没有相关属性,我们需要使用 SpannableString 去实现。
Google官方是否考虑出一组hint字体相关的属性呢?比如 hintSize,hintColor 这些。
先看效果图,如下,android:textSize=”18sp”,为凸显效果,只把 hint 文本前半部分修改为了 10sp。
图1:输入文本,字体大小18sp。
图2:hint文本,设置前半部分字体大小为10sp。
Kotlin 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
import android.os.Bundle
import android.text.SpannableString
import android.text.Spanned
import android.text.SpannedString
import android.text.style.AbsoluteSizeSpan
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val editText = findViewById<EditText>(R.id.et)
customHint(editText, "我是hint文本,10sp。秋风知我意,微凉又深情。")
}
/**
* 设置EditText中Hint字体大小
* @param editText
* @param hintString
*/
fun customHint(et: EditText, hintString: String) {
//设置字体大小
val textSize = AbsoluteSizeSpan(10, true)
val spannableString = SpannableString(hintString)
spannableString.setSpan(
textSize,
0,
hintString.length / 2,//注意这里,为了效果显示,只设置了文本的一半
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
et.hint = SpannedString(spannableString)
}
}
转载请注明:劉清揚的博客 » Android EditText修改hint文字大小