我正在创建一个复杂的文本视图,这意味着同一视图中的文本样式不同。一些文本需要在其正上方有一个小图像。但文本应该仍然存在(不仅仅是替换),所以简单的 ImageSpan 不会做。我不能使用 TextViews 的集合,因为我需要文本换行(或者我错了,这可以用 TextViews 来完成?)。
我试图在相同的字符上组合两个跨度,但是虽然这适用于文本样式,但不适用于 ImageSpan。
我要做什么:
有任何想法吗?
阅读这篇博文:http : //old.flavienlaurent.com/blog/2014/01/31/spans/ 帮助很大,但我仍然不在那里。
我正在尝试OnClickListener为<include>d布局设置a,但在编译时收到数据绑定错误,指出该数据绑定“找不到参数类型为android.view.View.OnClickListener的属性'android:onClick'的设置器”。
这里的上下文是我正在使用数据绑定来膨胀包含的布局,以便可以从viewModel绑定到包含布局的传递值到其中。
我为数据绑定表达式尝试了各种语法:
@{viewModel::onClickFunction}@{viewModel.onClickFunction}@{() -> viewModel.onClickFunction()}@{(view) -> viewModel.onClickFunction()}@{_ -> viewModel.onClickFunction()}我已经尝试将以上所有onClickFunction功能和功能作为OnClickListener对象。
关于Stack Overflow的其他相关问题似乎可以通过清理项目以重新生成数据绑定文件来解决此问题,但这对我没有用。
以下相关代码段:
class MyViewModel() {
val onClickFunctionAsAListener: OnClickListener = object:OnClickListener{
override fun onClick(v: View?) {
//Do something
}
}
fun onClickFunction() {
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
<layout>
<data>
<variable name="viewModel" type="full.package.name.MyViewModel"/>
</data>
<LinearLayout>
<include
layout="@layout/included_layout"
android:onClick="@{viewModel.onClickListener}"
app:customAttribute="@{`someText`}/>
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
<layout>
<data>
<variable name="customAttribute" type="String"/>
</data>
<TextView
layout="@layout/included_layout"
android:text="@{customAttribute}"/>
</layout>
Run Code Online (Sandbox Code Playgroud)