Xamarin Android: TextView / Entry padding eltávolítása

Ha az iOS Entry láthatólag nem tartalmaz margót vagy paddingot, de Androidon máshogy renderelődik ki, akkor gyanakodhatunk arra, hogy valahol nem állítottunk a Xamarin.Forms kódban margót/paddingot nullára. Azonban a Forms Paddingjával és Marginjával nem állítható az androidos TextView paddingja, ehhez customrenderer-re lesz szükség.

[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomEntry Renderer))]
namespace banditoth.Droid.Renderers
{
    public class CustomEntryRenderer : EntryRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                // Eltávolítjuk a paddingot.
                Control.SetPadding(0, 0, 0, 0);
            }
        }
    }
}

A Control.SetPaddinggal Custom értékeket állíthatunk be a natív TextView paddingjának. Nekem most az eltávolításra volt szükségem, ezért kinulláztam.

This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.

Xamarin Android: SplashScreenActivity és PushNotification megnyitás, kilőtt alkalmazásnál

Alapvetően, ha az alkalmazásunkat PushNotificationból indítja el az Android, és van SplashScreenActivitynk, akkor a MainActivityben nem fogjuk az Extras tömbben megkapni a PushNotification adatait, és nem fogunk tudni reagálni rá.

Mivel a SplashScreenActivity-nk a MainLauncher, ezért ennek az Activitynek az Intent.Extra-jai közé kerülnek be a Pushnotif extrák.

Fontos megjegyezni, hogy az onNewIntent nem fog megfutni terminált alkalmazásnál.

A MainActivity-n az ActivityAttributeban a következőket kell beállítani:

Exported = true, LaunchMode = LaunchMode.SingleTop

A MainActivityben meg kell hívni az onCreate metódusban a következő metódust a LoadApplication hívás után, ha Xamarin esetén a CrossGeeks FirebasePushNotificationPluginját használjuk:

FirebasePushNotificationManager.ProcessIntent(this, Intent);

A SplashScreenActivity ActivityAttributejánál a következőket kell beállítani:

MainLauncher = true, NoHistory = true

A SplashScreenActivity onResume metódusát pedig úgy kell Overrideolni, hogy a MainActivity StartActivityje előtt, kitöltjük az Intent extráit, mintha az Android oprendszer töltötte volna ki a MainActivity számára:

var mainIntent = new Intent(Application.Context, typeof(MainActivity));

 if (Intent.Extras != null) {
     mainIntent.PutExtras(Intent.Extras);
 }
 mainIntent.SetFlags(ActivityFlags.SingleTop);
 StartActivity(mainIntent);
This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.