Qualcuno può spiegare a me questi codici? Creazione di un controllo di layout personalizzato

chiunque mi spieghi questi codici cosa stanno facendo esattamente? Non riuscivo a capire come aggiungono due pulsanti (OK e Annulla). Mi aspetto un codice di creazione di un button come il new Button() o qualcosa di simile. Accesso ai pulsanti con id ma non ci sono pulsanti con questi id in alcun file xml. Posso solo vedere la R.id.okcancelbar_ok in file R.

Grazie.

  • Installare Android APK senza prompt
  • C'è un modo semplice per ordinare un JSONArray di oggetti da un attributo in Android?
  • INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE
  • Google GCM bloccò il mio server per submit richieste HTTPS
  • Come memorizzare il valore del colore in SharedMemory?
  • Conversione di RemoteView in una vista
  • Origine originale: http://developer.android.com/resources/articles/layout-tricks-merge.html

    Codice sorgente: http://progx.org/users/Gfx/android/MergeLayout.zip

     public class OkCancelBar extends LinearLayout { public OkCancelBar(Context context, AttributeSet attrs) { super(context, attrs); setOrientation(HORIZONTAL); setGravity(Gravity.CENTER); setWeightSum(1.0f); LayoutInflater.from(context).inflate(R.layout.okcancelbar, this, true); TypedArray arrays = context.obtainStyledAttributes(attrs, R.styleable.OkCancelBar, 0, 0); String text = arrays.getString(R.styleable.OkCancelBar_okLabel); if (text == null) text = "Ok"; ((Button) findViewById(R.id.okcancelbar_ok)).setText(text); text = arrays.getString(R.styleable.OkCancelBar_cancelLabel); if (text == null) text = "Cancel"; ((Button) findViewById(R.id.okcancelbar_cancel)).setText(text); arrays.recycle(); }} 

  • Esempio di stream del dettaglio di Android Master
  • Rilevazione vocale nell'applicazione Android
  • Variabile 'runnable' deve essere inizializzata
  • Proguard ignora il file di configuration della libreria
  • Adapter RecyclerView notifyDataSetChanged non funziona
  • Come allineare TextView attorno a un ImageView?
  • 2 Solutions collect form web for “Qualcuno può spiegare a me questi codici? Creazione di un controllo di layout personalizzato”

     LayoutInflater.from(context).inflate(R.layout.okcancelbar, this, true); 

    questa linea gonfia "questo" con il layout R.layout.okcancelbar

     ((Button) findViewById(R.id.okcancelbar_ok)).setText(text) 

    significa che c'è un button con id "okcancelbar_ok" nel layout okcancelbar (gonfiato in precedenza). A questo punto abbiamo assegnato il text "Ok"

     ((Button) findViewById(R.id.okcancelbar_cancel)).setText(text); 

    come sopra, c'è un button con id "okcancelbar_cancel" nel layout okcancelbar

    Quindi questo codice fa: 1) gonfiare la vista R.layout.okcancelbar 2) get il button (dichiarato nel layout precedente) con id "okcancelbar_ok" e impostare il text su "Ok" 3) idem con il button "okcancelbar_cancel" e text "Annulla"

    Il layout "layout / okcancelbar.xml" dovrebbe essere così:

     <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> <include layout="@layout/okcancelbar_button" android:id="@+id/okcancelbar_ok" /> <include layout="@layout/okcancelbar_button" android:id="@+id/okcancelbar_cancel" /> </merge> 

    Ci dovrebbe anche essere un "values ​​/ attrs.xml" che sembra:

     <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="OkCancelBar"> <attr name="okLabel" format="string"/> <attr name="cancelLabel" format="string"/> </declare-styleable> </resources> 

    E infine il layout / okcancelbar_button dovrebbe apparire come:

     <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/button" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> </Button> 

    Spero che sia d'aiuto

    Quanto sopra è quasi sufficiente per trasformare il disordinato MergedLayout.zip in un progetto utilizzabile.

    C'erano solo 2 dettagli che ho trovato per risolvere:

    1. Nel layout/okcancelbar_button.xml (il nome del corso termina con .xml),
      sostituire wrap_content per fill_parent . Con fill_parent uno dei pulsanti copre l'altro.

    2. Il file src/com/example/android/merge/R.java è incluso nel file MergedLayout.zip

    Dovrebbe essere eliminato

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.