如何从viewModel中获取xml中的属性视图

9 浏览
0 Comments

如何从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

0
0 Comments

问题的出现原因:我需要在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 ObservableField priceTextViewWidth = new ObservableField<>();
    public void detectWidthChange() {
        // 在这里检测XML中的宽度是否发生变化
    }
}

通过以上代码,我们可以直接从XML文件中获取TextView的尺寸,并在ViewModel中进行处理。这样就避免了通过Activity传递尺寸的麻烦,实现了直接从XML到ViewModel的传递。

0