Kotlin 使用或在参数中?
Kotlin using or in a paramater?
我有两个函数和两个数组。函数和数组做同样的事情并且看起来完全一样,除了一个接受一个字符串,一个接受一个可跨越的字符串。
它们看起来像这样:
private fun createTextView(randomText: String): View {
tv = TextView(context)
val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
tv.layoutParams = linearLevel1
tv.gravity = Gravity.END
tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
tv.text = randomText
return tv
}
private fun createTextView(randomText: SpannableStringBuilder): View {
tv = TextView(context)
val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
tv.layoutParams = linearLevel1
tv.gravity = Gravity.END
tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
tv.text = randomText
return tv
}
两个数组看起来像这样
private var textViewArr = ArrayList<String>()
private var textViewArrSpan = ArrayList<SpannableStringBuilder>()
我可以把这些结合起来吗?我可以让一个函数接受参数 A 或 B 或者用 A 或 B 初始化变量吗?我试着在网上搜索,我看到了建议我做我已经做过的事情的地方。想知道是否有更有效的方法。
两者都String
and SpannableStringBuilder
implement CharSequence
, and reading the documentation for TextView.setText()
,它也需要一个CharSequence
。
所以我认为你可以这样做:
private fun createTextView(randomText: CharSequence): View {
tv = TextView(context)
val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
tv.layoutParams = linearLevel1
tv.gravity = Gravity.END
tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
tv.text = randomText
return tv
}
不重要但相关,我们也可以将其作为表达式...
private fun createTextView(randomText: CharSequence): View =
TextView(context).apply {
layoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
gravity = Gravity.END
typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
text = randomText
}
将 randomText
的类型从 String
或 SpannableStringBuilder
更改为 CharSequence
我有两个函数和两个数组。函数和数组做同样的事情并且看起来完全一样,除了一个接受一个字符串,一个接受一个可跨越的字符串。
它们看起来像这样:
private fun createTextView(randomText: String): View {
tv = TextView(context)
val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
tv.layoutParams = linearLevel1
tv.gravity = Gravity.END
tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
tv.text = randomText
return tv
}
private fun createTextView(randomText: SpannableStringBuilder): View {
tv = TextView(context)
val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
tv.layoutParams = linearLevel1
tv.gravity = Gravity.END
tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
tv.text = randomText
return tv
}
两个数组看起来像这样
private var textViewArr = ArrayList<String>()
private var textViewArrSpan = ArrayList<SpannableStringBuilder>()
我可以把这些结合起来吗?我可以让一个函数接受参数 A 或 B 或者用 A 或 B 初始化变量吗?我试着在网上搜索,我看到了建议我做我已经做过的事情的地方。想知道是否有更有效的方法。
两者都String
and SpannableStringBuilder
implement CharSequence
, and reading the documentation for TextView.setText()
,它也需要一个CharSequence
。
所以我认为你可以这样做:
private fun createTextView(randomText: CharSequence): View {
tv = TextView(context)
val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
tv.layoutParams = linearLevel1
tv.gravity = Gravity.END
tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
tv.text = randomText
return tv
}
不重要但相关,我们也可以将其作为表达式...
private fun createTextView(randomText: CharSequence): View =
TextView(context).apply {
layoutParams = LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
gravity = Gravity.END
typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
text = randomText
}
将 randomText
的类型从 String
或 SpannableStringBuilder
更改为 CharSequence