Android programmgesteuert Layout (dh ohne XML)

Also habe ich eine Aktivitätsunterklasse namens CustomTitlebarActivity erstellt. Im Wesentlichen wird jede Hauptaktivität in meiner App eine benutzerdefinierte Titelleiste mit vielen gängigen Features wie einem Home-Button, einem Titel, einem Such-Button usw. haben. In meiner aktuellen Implementierung verwende ich immer noch explizit eine Include-Anweisung im Layout-XML für Jeder CustomTitlebarActivity:

<include layout="@layout/titlebar" /> 

Es scheint natürlich, dass ich das in CustomTitlebarActivity machen kann. Ich habe zwei Fragen: Welchen Code kann dies ersetzen, Etikett, und wo soll ich den Code setzen? (Mein erster Instinkt wäre, es in die SetContentView-Methode von CustomTitlebarActivity zu setzen.)

  • Wie kann ich ein neues Fragment in einem einzigen Tab zeigen?
  • Service und ein BroadCastReceiver
  • Android: Müssen die zufälligen SALT-Bytes an AESObfuscator weitergegeben werden?
  • Shader für Android OpenGL ES
  • Schlechtes Fenster-Token, du kannst keinen Dialog anzeigen, bevor eine Aktivität erstellt wird oder nachdem sie ausgeblendet ist
  • Wie kann ich Zeichen und in android strings.xml schreiben?
  • Auf einer verwandten Notiz würde ich einen Einblick in bessere Möglichkeiten zur Wiederverwendung von Android-UI-Code zu schätzen wissen (auch wenn an sich die Titelleisten zwischen den Aktivitäten leicht variieren müssen.)

  • Deserialisieren von JSON zu Java enum
  • So erkennen Sie die Sichtbarkeit der Eingabemethode, ohne die Berechtigung für die Erlaubnis zu erhalten
  • Android: Unter welchen Umständen würde ein Dialog erscheinen Ursache auf Pause () aufgerufen werden?
  • Was ist ein "Slider Interrupt" auf Android
  • Google Play Beta Test und Campaign Referrer
  • Auf welchen Thread onReceive () eines BroacastReceivers registriert bei LocalBroadcastManager laufen?
  • 2 Solutions collect form web for “Android programmgesteuert Layout (dh ohne XML)”

    Persönlich würde ich wahrscheinlich meine Activity Unterklasse schreiben, um immer setContentView zu einer Layoutdatei zu setzen, die eine vertikale fill_parent LinearLayout enthält, die nur meine LinearLayout enthält:

     <LinearLayout android:id="@+id/custom_titlebar_container" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!--titlebar here--> </LinearLayout> 

    Dann würde ich eine abstrakte Methode getContentAreaLayoutId() in CustomTitlebarActivity , die die Layout-ID des Inhalts unterhalb der Titelleiste für jede Unterklasse zurückgibt; Die Basis onCreate() von CustomTitlebarActivity würde dann einfach anrufen

     setContentView(R.layout.custom_titlebar_activity_frame_from_above); View.inflate(this, getContentAreaLayoutId(), findViewById(R.id.custom_titlebar_container)); 

    Alternativ können Sie Ihre abstrakte Methode für das Erhalten des Inhaltsbereichs zurückgeben eine View anstatt ein int , so dass Sie mehr Flexibilität, um Ihre Ansichten dynamisch zu konstruieren (aber zwingt Sie, sie selbst in die einfache "nur Dump diese XML-Layout hier" Fall aufzublasen ).

    Ich habe diese Frage auch getroffen, und ich habe es gerade jetzt gelöst. Ich denke, meine Lösung ist einfacher:

    1. Einen flügel verursachen:

       LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); 
    2. Aufblasen des Kindes:

       View childLayout = inflater.inflate(R.layout.child, (ViewGroup) findViewById(R.id.child_id)); 
    3. Fügen Sie es in Elternteil hinzu:

       parentLayout.addView(childLayout); 

    Es ist fertig, genieße es!

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.