Qualcuno sa come implementare facilmente una barra delle azioni con due pulsanti allungati?Barra di azione Android con due pulsanti allungati
Ecco un esempio del calendario app di Google:
Grazie!
Qualcuno sa come implementare facilmente una barra delle azioni con due pulsanti allungati?Barra di azione Android con due pulsanti allungati
Ecco un esempio del calendario app di Google:
Grazie!
Se invece si dispone di questo nel ActionBar per qualsiasi motivo, un modo per raggiungere questo obiettivo è quello di utilizzare una visualizzazione personalizzata in azione bar. All'interno del layout della visualizzazione personalizzata, quindi, preoccuparsi di impostare la larghezza dei pulsanti.
Raccontare l'attività di utilizzare una visualizzazione personalizzata per la barra delle operazioni:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar ab = getActionBar();
ab.setDisplayShowHomeEnabled(false);
ab.setDisplayShowTitleEnabled(false);
final LayoutInflater inflater = (LayoutInflater)getSystemService("layout_inflater");
View view = inflater.inflate(R.layout.action_bar_edit_mode,null);
ab.setCustomView(view);
ab.setDisplayShowCustomEnabled(true);
}
layout/action_bar_edit_mode.xml può quindi essere simile:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="fill_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_alignParentLeft="true"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/action_bar_button_cancel"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Cancel" />
<Button
android:id="@+id/action_bar_button_ok"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Ok" />
</LinearLayout>
</RelativeLayout>
Speranza che aiuta qualcuno!
Nota: mi rendo conto i layout di nidificazione brutti qui e normalmente io non consiglierei questo, ma per qualche ragione proprio layout del ActionBar rifiuta di lasciare il LinearLayout occupa l'intera larghezza da solo. Normalmente si dovrebbe evitare inutilmente layout di annidamento come questo! Forse se qualcuno lo vede può indicarci una soluzione migliore?
quello che sembra:
EDIT: C'è un excellent post di Roman Nurik dove spiega un modo per farlo molto bene.
EDIT 2: Se qualcuno è curioso, il modo corretto per disporre i pulsanti in modo da ampliare la larghezza del ActionBar senza la necessità di nido i layout come ho fatto in precedenza, è quello di impostare la visualizzazione personalizzata con i parametri di layout corretti che consentono al componente di corrispondere al gruppo principale.
In sostanza:
actionBar.setCustomView(view,new ActionBar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
Utilizzare una vista personalizzata in questo modo (con un layout relativo allungato) ha il brutto effetto collaterale di nascondere il menu di overflow che normalmente viene visualizzato per alcuni dispositivi . – Nariman
Non è davvero un brutto effetto collaterale, questo è in realtà l'effetto desiderato in questo caso. Se vuoi che l'overflow mostri ancora che potresti voler seguire ciò che fa l'app dei contatti (o "DoneButtonActivity sul progetto di Nurik di Roma) e allineare i pulsanti a sinistra per consentire di visualizzare l'overflow. Opzionalmente puoi impostare la tua attività con barra di azione divisa in modo che l'overflow sia visualizzato in basso. –
Creare un LinearLayout orizzontale con due pulsanti. Quindi imposta ciascuna delle loro larghezze su match_parent
e android:layout_weight="0.5"
(Ogni pulsante occuperà il 50% dello spazio).
EDIT:
Per applicare come ActionBar
sfondo:
(ActionBarSherlock) getSupportActionBar().setCustomView(R.layout.my_view);
(ActionBar) getActionBar().setCustomView(R.layout.my_view);
Come applicare questo LinearLayout all'ActionBar? –
Il mio suggerimento non avrebbe usato l'ActionBar; comporta la creazione manuale del proprio 'ActionBar' utilizzando un LinearLayout con 2 pulsanti e layout_weight – Guardanis
Bene, ok, non sembra essere disponibile una soluzione migliore. –
so 2 modi per farlo, ma non si rimanere in cima.
Ecco la prima:
È necessario eseguire l'override del metodo onCreateOptionsMenu, ma questo è aggiungere sul ActionBar, è necessario API 11 per fare questo e quando si ruota lo schermo questo pulsanti appaiono sul ActionBar, questo dipende dalla dimensione dello schermo.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
MenuItem add = menu.add(Menu.NONE, ADD_TIME, 0, R.string.add_time);
add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
MenuItem qkAdd = menu.add(Menu.NONE, QUICK_ADD_TIME, 1, R.string.quick_add_time);
qkAdd.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
e questo è il risultato:
se si sta utilizzando un Frammento è necessario impostare setHasOptionsMenu a vero, altrimenti il menu Mostra solito.
Ecco la seconda:
cancel_done.xml
<?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="@color/color_bar"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:dividerPadding="12dp"
android:orientation="vertical"
android:showDividers="end" >
<Button
android:id="@+id/button1"
style="@drawable/btn_cab_done_holo_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/btn_cab_done_holo_light"
android:text="CANCEL"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:dividerPadding="12dp"
android:orientation="vertical"
android:showDividers="beginning" >
<Button
android:id="@+id/button2"
style="@drawable/btn_cab_done_holo_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/btn_cab_done_holo_light"
android:text="DONE"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
lo stile risorsa btn_cab_done_holo_light.xml si possono trovare sul .. \ SDK \ piattaforme \ android - %% \ Data \ res \ drawable e poi su il layout si aggiunge solo:
<include
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_gravity="fill"
layout="@layout/cancel_done" />
e questo è il risultato:
Non so se è il modo migliore, ma funziona.
È possibile utilizzare ActionMode di ActionBar per implementare le azioni Fine e Annulla.
Vedi http://developer.android.com/guide/topics/ui/menus.html#CAB
si chiama bar fatto in Android. date un'occhiata a questo sarà utile https://github.com/googlesamples/android-DoneBar
Questa non è la barra delle azioni ... sembra più un widget a discesa di qualche tipo. –
Sono abbastanza sicuro che lo sia. –
possibile duplicato di [Annulla pulsanti Done nell'app Calendario: fa parte della barra delle azioni?] (Http://stackoverflow.com/questions/15103895/cancel-done-buttons-in-calendar-app-is-it-part -della action bar) –