我使用Material TextInputEditText而不是EditText。但是TextInputEditText没有setText(resId:int,varargs formatArgs:Any!),当通过values-> strings.xml和EditText格式化字符串时非常有用。
所以我添加了这种扩展方法来做到这一点:
fun TextInputEditText.setText(@StringRes resId:Int, vararg formatArgs:Any ){
val formattedText = resources.getString(resId, *formatArgs)
this.setText(formattedText)
}
现在我可以这样使用它:
在values-> strings.xml中:
<string name="persian_date_format">%1$d/%2$d/%3$d</string>
在布局文件中:
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/d8"
android:layout_marginTop="@dimen/d4"
android:layout_marginEnd="@dimen/d8"
android:hint="@string/hint_text"
app:boxBackgroundColor="#fff"
app:endIconMode="clear_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/pick_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:maxLines="1"
android:singleLine="true"
android:text="@={viewModel.pickDate}" />
</com.google.android.material.textfield.TextInputLayout>
在片段中,我可以使用这种扩展方法,如下所示:
binding.pickDate.setText(R.string.persian_date_format, year, monthOfYear, dayOfMonth)
有更好的解决方案吗?
您可以直接使用String.format
而不是创建extension
函数。检查以下内容:
binding.pickDate.setText(String.format(R.string.persian_date_format, year, monthOfYear, dayOfMonth))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句