Aggiungo dinamicamente le viste a un layout relativo e le definisco in modo programmatico. Le viste possono essere spostate sullo schermo in modo che la loro posizione stia cambiando.Impostazione dinamica delle viste con l'impostazione LayoutParams.addRule fino all'ultima posizione della vista
Quando si tenta di impostare una vista (pulsante2) per sedersi sotto un'altra vista (pulsante1), il pulsante2 viene inserito nella vecchia posizione del pulsante1 (la posizione predefinita in cui le viste vengono aggiunte prima dello spostamento). Ho collegato le immagini per ottimizzarlo meglio.
Questo è il layout originale
layout dopo Button2 viene riposizionato
Ho uno sfondo LinkedList tenere traccia di tutte le modifiche di visualizzazione e visualizzare gli attributi per il layout, se questo fa la differenza.
Qui ci sono le funzioni di codice:
come sto riposizionamento Button1:
Buttons b = (Buttons) viewIndex;
positioningLayout = new RelativeLayout.LayoutParams(b.getLayoutParams());
positioningLayout.addRule(RelativeLayout.CENTER_VERTICAL);
b.setLayoutParams(positioningLayout);
baseLayout.addView(b);
Riposizionamento vista sotto un altro frammento vista Codice:
Buttons b = (Buttons) viewIndex;
positioningLayout = new RelativeLayout.LayoutParams(b.getLayoutParams());
positioningLayout.addRule(RelativeLayout.BELOW, viewIdFromList.intValue());
b.setLayoutParams(positioningLayout);
b.invalidate();
Come sto aggiungendo le viste al layout.
uiList.addView(new Buttons(this), "BUTTON");
setDialogView(uiList.getLast());
showDialog(SET_ID);
reloadUI();
setDialogView è solo di passaggio la vista della finestra SET_ID modo che possa assegnare manualmente un ID per la visualizzazione (per la prova). reloadUI() trova solo l'ultima vista aggiunta allo sfondo LinkedList e la aggiunge al relativoLayout usando .addView;
Se necessitate di più codice, fatemelo sapere. Mi manca una chiamata per aggiornare i layout della vista dopo aver apportato una modifica alle viste child relativeLayout? Sembra che la vista si stia riposizionando visivamente ma i LayoutParam effettivi non si aggiornano quindi quando si imposta Button2 su Button1 si ottiene la posizione precedente.
C'è un modo per forzare una posizione di layout relativa riposizionare?
si può mostrare il layout principale? –
L'interfaccia utente viene creata in modo completamente dinamico, quindi non viene utilizzato alcun XML:/ – Sevros