2015-06-24 19 views
5

Nella mia app ho un modello di dettaglio principale, ma voglio che i dettagli siano in grado di cambiare visualizzazione. Voglio risparmiare più spazio possibile in modo che il "contenuto" sia bello e spazioso. Come posso navigare da un "dettaglio" ad un altro "dettaglio", mentre il pulsante "Su" torna all'elenco "Master"? (Vedere la freccia tra "Dettagli 1" e "Dettagli 2" sulla mia immagine.)Android: come posso navigare da un "dettaglio" ad un altro "dettaglio", mentre il pulsante "Su" torna all'elenco "Master"?

enter image description here

ho passato un sacco di tempo a pensare a questo e la ricerca di vari metodi di fare questo, e anche ha chiesto una domanda di overflow dello stack (How to do something like Drop Down Navigation in Android (since it looks like it has become deprecated?)) e sto ancora aspettando una risposta utile. Anche se ho risposto a questa domanda, non sono sicuro che funzionerebbe davvero con il flusso di Master Detail come questo.

Se il dettaglio principale non funziona, quale sarebbe il modo migliore per realizzare questo layout dell'interfaccia utente che ho in mente? Qualcuno ha mai fatto qualcosa del genere? Grazie!


Edit: Idealmente, vorrei anche che l'utente sia in grado di impostare una vista "Default" (Dettaglio 1 o Particolare 2), che sarà il primo schermo a venire dopo aver cliccato un elemento sullo Lista principale


Edit 2: ho avuto l'idea di utilizzare un ViewPager per la transizione tra Dettaglio 1 e 2. Particolare non sono sicuro se funzionerà comunque. Oppure, potrei rendere dettaglio 2 un'attività aggiuntiva al di fuori del dettaglio 1, ma non voglio fare spazio per un pulsante nella mia area "contenuto". Non riesco a utilizzare un cassetto perché l'icona del cassetto si trova nello stesso punto della freccia "Su". Sono in perdita perché penso che il cassetto sia il migliore per questa situazione, ma non posso usarlo perché sto già usando la freccia "Su".


Edit 3: Ho cercato di pensare a un app che ha fatto quello che sto cercando di fare, e credo che "Kindle" fa bene. Deve passare da una pagina all'altra di un libro, ma prima devi scegliere un libro. Mentre sei in un libro su Kindle, la barra delle azioni & Cassetto di navigazione diventa bianca e il primo elemento del Cassetto di navigazione è "Libreria". Cliccando su "Libreria" ti porta a un'attività completamente diversa con una barra delle azioni nera e un cassetto di navigazione nero con diverse voci di menu. Quindi, penso che questa sia probabilmente la strada che dovrei prendere. Probabilmente non avrei più un pulsante "Su" e userei solo il primo elemento del cassetto per agire come un pulsante "Su". Sono ancora interessato a imparare e considerare tutte le mie opzioni, però.

+1

Hai familiarità con l'app Hello SMS? Penso che l'interfaccia utente sia buona per quello che stai cercando di ottenere qui. Dai un'occhiata a quello. –

risposta

1

Ecco un n alternativa all'utilizzo di Fragment se ViewPager (dato che in genere potrebbero terminare con più codici standard).

Posizionare tutti i dettagli della vista in uno layout.xml e attivare la loro visibilità tramite View.setVisibility() con un clic di un pulsante. Puoi etichettare questo pulsante come "Continua", "Avanti" o qualsiasi altra cosa. L'idea principale è di far capire all'utente che si trovano nello stesso contesto nonostante il cambio di schermo.

Ecco un esempio di come si dovrebbe organizzare il tuo dettagli layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 
    <LinearLayout 
     android:id="@+id/layout_page_1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="visible"> 

     <!-- Put your detail 1 content here --> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout_page_2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="gone"> 

     <!-- Put your detail 2 content here --> 

    </LinearLayout> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Continue" 
     android:id="@+id/bt_continue"/> 

</RelativeLayout> 

Come ho detto, l'idea è di attivare o disattivare la visibilità di layout_page_1 e layout_page_2 su bt_continue ma ho cliccato:

@Override 
public void onClick(View v) { 
    if(v.getId() == R.id.bt_continue) { 
     layoutPage1.setVisibility(View.INVISIBLE); 
     layoutPage2.setVisibility(View.GONE); 
    } 
} 

Con questa logica, potresti anche implementare un pulsante "Precedente" per tornare alla prima pagina dei tuoi dettagli.

Se si desidera che l'utente sia in grado di impostare una vista predefinita, anche questo è facile. È sufficiente salvare uno nel proprio SharedPreferences che rappresenterà la pagina che verrà "aperta", ovvero la vista che verrà impostata su View.VISIBLE - la prima volta che l'utente apre la visualizzazione dei dettagli.

2

voglio risolvere che simili:

  • Master (frammento all'interno MainActivity)
  • Dettaglio 1 (frammento all'interno FirstDetailActivity)
  • Particolare 2 (frammento all'interno SecondDetailActivity)

manifesto file (ad esempio):

<application> 

    <!-- The main/home activity (it has no parent activity) --> 
    <activity 
     android:name="...MainActivity" ...> 
     ... 
    </activity> 


    <!-- First detail activity --> 
    <activity 
     android:name="...FirstDetailActivity" 
     android:parentActivityName="...MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="...MainActivity" /> 
    </activity> 

    <!-- Second detail activity --> 
    <activity 
     android:name="...SecondDetailActivity" 
     android:parentActivityName="...MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="...MainActivity" /> 
    </activity> 

</application> 

Quindi, fondamentalmente:

  1. Cliccare sulla lista (Master) si apre FirstDetailActivity
  2. Cliccare sulla FirstDetailActivity (Tab, Spinner, Bottone, ecc) si apre SecondDetailActivity
  3. Pulsante in uno dei FirstDetailActivity o SecondDetailActivity fornisce la navigazione a MainActivity

Riferimento: http://developer.android.com/training/implementing-navigation/ancestral.html

1

Implementate le vostre pagine di dettaglio come Frammenti e utilizzate un ViewPager per tenerle entrambe. In questo modo, l'utente può, scorrendo verso sinistra o verso destra, passare da entrambi. Ad esempio, se guardi l'app Gmail, puoi anche scorrere i dettagli della tua posta una volta che ne hai aperta una dall'elenco.