DataBinding con Android Dialog
He implementado DataBinding
en Activity
, Fragment
y RecyclerView
. Ahora tratando de hacerlo en el Dialog
de Dialog
, pero poco confundir acerca de cómo configurar la vista personalizada dentro de él?
Aquí está el código que he implementado para el Dialog
.
- Cómo vincular el diseño con varios calificadores
- Android dataBinding - @BindingAdapter nombre de la aplicación personalizada que se ignora
- Formato HTML en la nueva biblioteca de enlace de datos de Android
- Error de DataBinding de Android. No se pudo encontrar el complemento
- ¿Cómo usar com.android.databinding en el módulo (estudio de Android)?
Dialog dialog = new Dialog(context); dialog.getWindow(); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); LayoutTermsBinding termsBinding; dialog.setContentView(R.layout.layout_terms); dialog.getWindow().setLayout(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); dialog.show();
Sé si es Activity
podemos realizar DataBindingUtil.setContentView()
y para Fragment
podemos realizar DataBindingUtil.inflate()
pero estoy confundido acerca de cómo convertir dialog.setContentView(R.layout.layout_terms);
Con DataBinding
.
- Vinculación de datos de Android mediante etiqueta de inclusión
- Ejemplo de enlace de datos de 2 vías de android no funcionan como se describe
- Error de enlace de datos: sólo se permite un elemento de diseño y un elemento de datos.
- Enlace de datos: enlaza método único de escucha con múltiples métodos
- Spinner enlace de datos de 2 vías
- La vinculación de datos de Android pasa los argumentos al método onClick
- Cómo combinar componentes de arquitectura con vinculación de datos en android?
- Enlace de datos de Android layout_width y layout_height
Asumiendo algo como esto es tu layout_terms.xml
:
<layout> <data> <!--You don't even need to use this one, this is important/necessary for the inflate method --> <variable name="testVariable" value="String" /> </data> <LinearLayout> <TextView /> </LinearLayout> </layout>
En primer lugar, tendrá que obtener su Binding
. Esto se hace simplemente inflando:
/* * This will only work, if you have a variable or something in your 'layout' tag, * maybe build your project beforehand. Only then the inflate method can be found. * context - the context you are in. The binding is my activities binding. * You can get the root view somehow else. */ LayoutTermsBinding termsBinding = LayoutTermsBinding .inflate(LayoutInflater.from(context), (ViewGroup) binding.getRoot(), false); //without a variable this would be LayoutTermsBinding termsBinding = DataBindingUtil. inflate(LayoutInflater.from(context), R.layout.layout_terms, (ViewGroup) mainBinding.getRoot(), false);
Segundo paso: Establezca los termsBinding.getRoot()
como ContentView
:
dialog.setContentView(termsBinding.getRoot());
Y tu estas listo. 🙂
- Diferencia entre la aplicación de Android and phonegap nativa
- ¿Por qué es posible en Android 5 (Lollipop) cambiar directamente las vistas de interfaz de usuario de otros subprocesos?