Ich versuche Datenbindung mit benutzerdefinierten Ansichten zu verwenden (eine mögliche Verwendung George Mount zeigte here).Android-Datenbindung funktioniert nicht mit <merge> Attribute
Man kann sich nicht vorstellen, zusammengesetzte Ansichten ohne <merge>
Tag zu erstellen. Doch in dieser Situation Datenbindung nicht:
MyCompoundView
Klasse:
public class MyCompoundView extends RelativeLayout {
MyCompoundViewBinding binding;
public MyCompoundView (Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
binding = MyCompoundViewBinding.inflate(inflater, this, true);
}
my_compound_view.xml
: von app:isGone="@{!data.isViewVisible}"
Ich hoffte, die Sichtbarkeit der gesamten Verbindung Ansicht zu steuern
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<data>
<variable name="data" type="com.example.MyViewModel"/>
</data>
<merge
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:isGone="@{!data.isViewVisible}">
<ImageView
android:id="@+id/image_image"
android:layout_width="60dp"
android:layout_height="60dp"
app:imageUrl="@{data.imagePhotoUrl}"/>
<!-- tons of other views-->
</merge>
</layout>
Der Compiler-Fehler:
Error:(13) No resource identifier found for attribute 'isGone' in package 'com.example'
Error:(17, 21) No resource type specified (at 'isGone' with value '@{!data.isViewVisible}').
Ich habe alle neede d @BindingAdapter
Methoden. Jetzt erben ich die Ansicht von FrameLayout
und verwende <RelativeLayout>
statt <merge>
- und es funktioniert. Aber ich habe ein extra verschachteltes Layout.
Frage:merge
attrs werden ignoriert. Gibt es eine Möglichkeit, das zu umgehen?
Android Studio 1.5.1 stabil
Gradle Plugin com.android.tools.build:gradle:1.5.0
ist es am besten, wenn Sie anstelle von verwenden. –
@Rakeeb Rajbhandari, ja, Databinding funktioniert ok mit '' Tag. Dies löst jedoch nicht das Problem der zusätzlichen Ansichtsgruppe beim Aufblasen der benutzerdefinierten Ansicht. –
Bitte werfen Sie einen Blick auf meine Frage. Ich verwende Include-Tag und innere Klasse. https://StackOverflow.com/q/45143721/5214893 –