如何从viewModel中获取xml中的属性视图
如何从viewModel中获取xml中的属性视图
我有三个文件(Activity,ViewModel,XML)。我使用MVVM将XML连接到ViewModel。
ViewModel.class
open class MainViewModel : ViewModel() {
val price = MutableLiveData
val priceTextViewWidth = MutableLiveData
}
在activity中,我使用以下代码将XML连接到ViewModel:
binding.viewModel = viewModel
我可以通过更改ViewModel中的price变量来更新TextView,但是我需要将TextView的宽度传递给ViewModel中的priceTextViewWidth。
问题的出现原因:我需要在ViewModel中获取TextView的尺寸,但不想通过Activity将这些尺寸传递给ViewModel,而是希望直接从XML文件中获取并传递给ViewModel。
解决方法:将XML布局中的android:layout_width属性的值从wrap_content替换为@{viewModel.priceTextViewWidth},这样可以在ViewModel中获取TextView的尺寸。另外,还需要在ViewModel中检测XML中的宽度是否发生变化。
以下是解决方法的具体代码:
XML布局文件:
ViewModel中的属性和方法:
public class ViewModel { public final ObservableFieldpriceTextViewWidth = new ObservableField<>(); public void detectWidthChange() { // 在这里检测XML中的宽度是否发生变化 } }
通过以上代码,我们可以直接从XML文件中获取TextView的尺寸,并在ViewModel中进行处理。这样就避免了通过Activity传递尺寸的麻烦,实现了直接从XML到ViewModel的传递。