2017-07-25 95 views
1

类似以下内容:我们可以在Databinding的xml布局中获得Root View吗?

android:onClick="@{() -> presenter.onClick(rootView)}"

的源代码:

<?xml version="1.0" encoding="utf-8"?> 
<layout> 

    <data> 
     <variable 
      name="presenter" 
      type="Presenter" /> 
    </data> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:onClick="@{() -> presenter.onClick(rootView)}" 
      android:text="abcde" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="tytyt" /> 
    </LinearLayout> 
</layout> 
+0

你所说的'rootView'意思?您可以使用'binding.getRoot()'获得布局的视图对象。让我知道你是不是在寻找这个。 –

+0

我想从xml中得到它,而不是从代码 – Sam

回答

1

是的,你可以通过它的ID

android:onClick="@{() -> presenter.onClick(viewId)}" 

得到perticular鉴于你的情况,你可以做

<LinearLayout android:id="@+id/parentView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:onClick="@{() -> presenter.onClick(parentView)}" 
     android:text="abcde" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="tytyt" /> 
</LinearLayout> 

和你的onClick会

public void onClick(View view) or public void onClick(LinearLayout layout) 
{ 

} 
+0

我记得前一段时间尝试这个,但它没有工作,但它现在似乎工作,所以你的答案应该被标记为接受和使用,因为它更接近于什么最初希望的线程起动器。误导人。 – Dokuzov

+0

多数民众赞成在好:)因为总是有多种方法到达目的地。 –

+1

事实上,无论你的问题更清楚,因为提供根的逻辑将不是必需的。这是前进的方向!干杯 – Dokuzov

相关问题