I parametri di layout della vista caricata vengono ignorati

Sto cercando di scrivere la mia propria View personalizzata e ho problemi con LayoutParams .

L'idea è di estendere ViewGroup ( LinearLayout )

  • Come submit i dati binari con socket.io?
  • Recyclerview all'interno della visualizzazione di scorrimento nidificato carica tutti i dati anziché call uno ad uno quando scorri
  • È ansible modificare il valore di una string aggiunta in res / strings.xml su Android in fase di esecuzione / o di codice?
  • Imansible utilizzare la tastiera in emulatore Android
  • Gestione di exception di memory di gestione di Android sull'elaborazione delle immagini
  • impostato l'orientamento della videocamera android iniziata con l'intenzione ACTION_IMAGE_CAPTURE
  •  public class MyView extends LinearLayout{ public MyView(Context context, AttributeSet attrs) { super(context, attrs); } public MyView(Context context) { super(context); } public void putContent(){ setOrientation(HORIZONTAL); LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); for (int i = 0; i < 5; i++){ View view = inflater.inflate(R.layout.item, null); TextView tv = (TextView)view.findViewById(R.id.item_text); tv.setText("Item " + i); addView(view); } } } 

    Come potete vedere il metodo putContent un elemento e aggiunge alla mia vista. Ecco un layout di elementi

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF"> <TextView android:text="TextView" android:id="@+id/item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000"/> </LinearLayout> 

    E layout di schermo principale

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android_layout_weight="1" android:text="@string/hello" /> <my.test.MyView android:id="@+id/my_view" android:layout_width="match_parent" android:layout_height="match_parent" android_layout_weight="1" /> </LinearLayout> 

    E codice di attività

     public class Start extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyView myView = (MyView)findViewById(R.id.my_view); myView.putContent(); } } 

    Ecco lo screenshot di quello che ottengo

    immettere qui la descrizione dell'immagine

    Quindi il problema è: gli attributi dell'elemento radice dell'elemento vengono ignorati

     android:layout_width="match_parent" android:layout_height="match_parent" 

    Ma nel risultato voglio get qualcosa di simile (ho questo risultato quando sostituisci addView(view); con questa linea)

     addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1F)); 

    immettere qui la descrizione dell'immagine

    Quindi la domanda è: come posso get questo risultato senza LayoutParams codificato? Grazie per qualsiasi aiuto!

    aggiornare

    Guardo anche i campi variables di view in modalità di debug – i mLayoutParams sono null e non sono diventati nulli quando aggiungo una view gonfiata a genitore con addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1F)); . immettere qui la descrizione dell'immagine

    Ma mLayoutParams di un figlio di vista appena caricato non è nulla. Perché i LayoutParams di un elemento radice solo nel layout xml vengono ignorati quando la vista è gonfiata?

  • Verifica del token di Firebase
  • android.support.v4.app.Fragment.setUserVisibleHint puntatore null sulla ripresa di app
  • Come utilizzare righe / linee orizzontali per allineare il text in EditText in Android?
  • Imansible trovare R.xml.preferences?
  • DataPickerDialog impone in modo errato una data minima del 1 ° gennaio 1970
  • Utilizzo di Android AutoCompleteTextView con ArrayAdapter <Oggetti> invece di ArrayAdapter <Archi>
  • 3 Solutions collect form web for “I parametri di layout della vista caricata vengono ignorati”

    Utilizzare la seguente dichiarazione per gonfiare:

     View view = inflater.inflate( R.layout.item /* resource id */, MyView.this /* parent */, false /*attachToRoot*/); 

    Ok, se capisco correttamente, hai l'XML sopra indicato in ll e stai aggiungendo qualcosa ( R.layout.item_layout ) ad esso.

    I problemi che vedo sono:

    • Il layout di base (il xml che è stato dato, caricato in ll ) ha match_parent , ma non sappiamo se ha anche un genitore. Quindi il comportmento è difficile da indovinare.
    • Non hai specificato quali sono i parametri di layout per l'elemento che stai aggiungendo (ancora supponendo R.layout.item_layout non è il xml che hai mostrato). Quindi potrebbe essere previsto comportmento, o anche indefinito (quindi si aspetta che sia inaspettato).

    Potrebbe essere presente un numero troppo alto di codice da submit qui, non lo so, ma allora potresti essere meglio utilizzando il visualizzatore di gerarchie per verificare quali sono le opinioni del tuo tree, in modo da poter vedere cosa sta succedendo.

    Inoltre, ricorda che non tutti i margini di vista supportno il margine .

    Anche se una vista può definire un'imbottitura, non fornisce alcun supporto per i margini. Tuttavia, i gruppi di visualizzazione forniscono un tale supporto. Fare riferimento a ViewGroup e ViewGroup.MarginLayoutParams per ulteriori informazioni.

    In parametri "layout_" Android i parametri si riferiscono al modo in cui la vista corrente si comport nel suo layout padre. In questo caso, il suo genitore è ll, ma non possiamo vedere quello che è.

    Per quanto riguarda il layout del TextView all'interno del LinearLayout, poiché la LinearLayout è verticale, tutti i suoi figli hanno automaticamente il loro layout_height sovrascritto da "wrap_content" in modo che possano essere disposti uno sotto l'altro correttamente.

    Quindi ora la domanda è, che cosa effettivamente vedere e cosa vuoi vedere?

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