Samsung Galaxy S4 disalline l'icona Actionbar

Sto implementando un disegno visivo per un'app, e si scopre che la Galaxy S4 disorienta l'icona della barra degli strumenti, come dimostrato nello screenshot:

immettere qui la descrizione dell'immagine

  • Come posso fornire i parametri a una function di test che è stata lanciata usando il command adb shell am Instrumentation
  • è ansible creare listView all'interno della window di dialogo?
  • Imballaggio SQLite DB con la mia applicazione
  • Aggiungere il supporto JS e CSS al progetto Android Studio
  • Adatta l'image in webview
  • Come impostare un'ampiezza di attività a tema di dialogo alla width dello schermo?
  • Le schermate sono state scattate utilizzando lo stesso file APK su entrambi i dispositivi. La linea guida viola si trova a 16dp da sinistra, ed è molto importnte per il resto del layout dello schermo. Il S4 aggiunge un altro 8dp o così. Questo margine extra rende l'icona della casa veramente fuori luogo.

    Ho provato un mucchio di altri telefoni Samsung a differenti risoluzioni / densità (Galaxy S3, Galaxy S4 Mini, Galaxy Ace) e tutti questi allineano correttamente l'icona a 16dp.

    Lo avrei chalked fino alla frammentazione di Android e andiamo avanti, ma il marketshare della Galaxy S4 è così grande che non posso davvero ignorare il problema. Qualcun altro ha incontrato questo problema e ha trovato una correzione?

  • Come codificare la nuova funzionalità compatibile con il back-end in SDK Android?
  • Scaricare i file in coda in Android
  • Qual è la differenza tra "px", "dip", "dp" e "sp"?
  • Tema a schermo integer per AppCompat
  • Salva i valori prima di chiudere l'applicazione?
  • Quante attività contro frammenti?
  • One Solution collect form web for “Samsung Galaxy S4 disalline l'icona Actionbar”

    Questo codice è abbastanza auto-esplicativo. Verifica prima se il dispositivo corrente è un model Samsung Galaxy S4, basato sull'elenco trovato qui . In caso ActionBar , quindi, cerca la relativa View s basata sul layout di ActionBar e sulla posizione relativa di home ImageView nella gerarchia. Quindi li sposta a sinistra dal parametro di posizionamento (positivo). Controlla anche se viene visualizzata una visualizzazione personalizzata e lo sposta. L'unica modifica è per le coordinate di View s ', quindi dovrebbe funzionare con qualsiasi tema o stile.

     private static final String SAMSUNG = "SAMSUNG"; private static final String[] S4_MODELS = { "GT-I9506", "GT-I9505G", "SGH-I337", "SGH-M919", "SCH-I545", "SPH-L720", "SCH-R970", "GT-I9508", "SCH-I959", "GT-I9502", "SGH-N045", "SGH-I337M", "SGH-M919V", "SCH-R970X", "SCH-R970C" }; private void adjustGalaxyS4(int offset) { if (isGalaxyS4()) shiftHomeView(offset); } private boolean isGalaxyS4() { String manufacturer = Build.MANUFACTURER.toUpperCase(); String model = Build.MODEL.toUpperCase(); if (SAMSUNG.equals(manufacturer) && !TextUtils.isEmpty(model)) { for (String m : S4_MODELS) if (model.contains(m)) return true; } return false; } private void shiftHomeView(float offset) { try { View grandParentView = (View) ((View) findViewById(android.R.id.home).getParent()).getParent(); View upView = ((ViewGroup) ((ViewGroup) grandParentView).getChildAt(0)).getChildAt(0); grandParentView.setX(grandParentView.getX() - offset); upView.setX(upView.getX() + offset); if ((getActionBar().getDisplayOptions() & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) getActionBar().getCustomView().setX(getActionBar().getCustomView().getX() - offset); } catch (Exception e) { // Fail silently } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.