Xamarin.Forms: alineación incorrecta del texto del botón después del clic (Android)
Tengo un problema con Xamarin.Forms (versión 1.2.2) en Android (Nexus 5). La alineación de Button.Text
menudo no se centra después de realizar un clic.
En un proyecto corto, me di cuenta, que la actualización de la interfaz de usuario provoca el problema.
- Xamarin forma la posición de los elementos de la barra de herramientas para Android
- Xamarin.Forms: El receptor de difusión no funciona cuando la aplicación está cerrada
- AlarmManager sólo funciona en un futuro próximo
- Superposición blanca en WebView después de la actualización a AppCompat con Xamarin Forms
- Xamarin.Forms XAML - Agregar controles nativos
public class App { public static Page GetMainPage() { var label = new Label { Text = "label", }; var buttonBad = new Button { Text = "buttonBad", Command = new Command(() => label.Text += "1"), }; var buttonGood = new Button { Text = "buttonGood", }; return new ContentPage { Content = new StackLayout { Children = { buttonBad, buttonGood, label, } } }; } }
Un clic en "buttonBad" (actualizar el label.Text
) hace que la alineación de texto de este botón no se centró más. Un clic en "buttonGood" no causa el problema.
¿Hay una buena solución para resolver este problema?
Esta solución parece ser demasiado complicada: http://forums.xamarin.com/discussion/20608/fix-for-button-layout-bug-on-android
Editar: Un programatically editar de la interfaz de usuario también casos el error. Cambiar la label.Text
en un método asíncrono después de una espera corta lleva el "buttonGood" para alinear su texto equivocado después de un clic.
Edit2: He creado un proyecto de ejemplo / prueba en GitHub: https://github.com/perpetual-mobile/ButtonTextAlignmentBug.git La alineación es correcta, cuando el StackLayout es reemplazado por un AbsolutLayout, pero necesito StackLayout para funcionar bien.
- El mensaje de la nube de Google 'Not Registered' falla y se cancela la suscripción de las mejores prácticas?
- Xamarin.Forms MissingMethodException: 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener' no encontrado
- Convertir automáticamente el código entre Xamarin iOS y Xamarin Android
- Agregue un niño al padre en el botón Haga clic en Xamarin.forms
- Proguard en gris en ciertas configuraciones de construcción
- Xamarin con Visual Studio: pantalla en blanco al depurar
- Xamarin.Forms SetHasNavigationBar causas falsas salto en PushAsync
- ParseInstallation.SaveAsync () que causa UnhandledException en formularios Xamarin Android
Ok, después de horas de tratar con este insecto tonto, lo resolví mediante la implementación de un renderizador personalizado y sobreescribir ChildDrawableStateChanged
:
public override void ChildDrawableStateChanged(Android.Views.View child) { base.ChildDrawableStateChanged(child); Control.Text = Control.Text; }
Lo mismo ocurre cuando ocultar una etiqueta, cambiar su contenido y mostrarlo de nuevo. ¿Alguna sugerencia?
- Cómo utilizar Path (android.graphics.Path) con lienzo en android?
- Código VS para Android. ¿Es posible?