2016-06-04 15 views
2

Ich habe kürzlich ein Projekt fertiggestellt, und mein nächstes Ziel war es, einen Build-Flavor speziell für RTL zu erstellen. Eine wichtige Anmerkung war, dass ich das RTL-Layout unabhängig von der Gerätesprache erzwingen muss.Android setLayoutDirection auf DialogFragment

So habe ich es geschafft RTL zu zwingen, auf den meisten der App die Ansicht Methode setLayoutDirection mit und gedreht, alle Ansichten, die nicht kooperieren, aber aus irgendeinem Grund konnte ich die Dialoge in der App nicht spiegeln, die scheinen sich nur zu spiegeln, wenn sich die Gerätesprache ändert. Ich habe versucht, den Dialog im OnCreateDialog zu spiegeln, auf getView zugreifen, die Null zurückgegeben, und ich bin mir nicht sicher, was ich noch tun kann ...

Könnte jemand mir helfen, das DialogFragment auf RTL zu spiegeln?

Danke.

Antwort

1

Sie können getWindow().getDecorView().setLayoutDirection() für AlartDialog verwenden, die Layout-Richtung ändert sich für Titel und Inhalt, aber nicht für die Schaltflächen.

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    builder.setPositiveButton("OK", null); 
    builder.setNegativeButton("Cancel", null); 

    AlertDialog alertDialog = builder.create(); 

    // Here you can change the layout direction via setLayoutDirection() 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     alertDialog.getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
    } 

    return alertDialog; 
}