È possibile disabilitare un pulsante nella barra delle azioni in Android? Stavo guardando intorno e non riuscivo a trovare alcun frammento di codice per questo, stavo pensando che ci dovrebbe essere un modo semplice.Disattiva il pulsante della barra delle azioni in Android
risposta
Una volta che si esegue l'azione dell'utente quando si desidera disattivare la barra delle azioni, impostare alcuni bandiera, dicono
disableButtonFlag
.Chiama
invalidateOptionsMenu()
. Questo attiveràonCreateOptionsMenu
da invocare per rigenerare il tuo menu.Infine modificare il
onCreateOptionsMenu
per disattivare il pulsante desiderato in base allo stato didisableButtonFlag
.if (disableButtonFlag) { menu.findItem(R.id.your_item).setEnabled(false); } else { menu.findItem(R.id.your_item).setEnabled(true); }
O più semplicemente:
menu.findItem(R.id.your_item).setEnabled(!disableButtonFlag);
si può fare qualcosa di simile:
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
menu.findItem(R.id.your_item).setEnabled(false);
return super.onCreateOptionsMenu(menu);
}
Ma dovrebbe essere abilitato all'inizio, ho bisogno di disabilitare in seguito, dopo l'azione dell'utente. Si prega di leggere il commento sopra. Grazie. – Mediha
Basta creare un attributo 'Menu' nella tua attività e inizializzarlo nel' onCreateOptionsMenu'. – Brtle
Ho trovato il modo in cui chiamare invalidateOptionsMenu, ma fondamentalmente era questo. Grazie. – Mediha
Per gli sviluppatori di Android che utilizzano un costume ActionBar
cioè (Save & Annulla pulsanti di azione), ho provato il seguente codice per disattivare Annulla pulsante di azione come segue:
codice Java:
LayoutInflater inflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View actionBarButtons = inflater.inflate(
R.layout.edit_event_custom_actionbar, new LinearLayout(this),
false);
View cancelActionView = actionBarButtons
.findViewById(R.id.action_cancel);
cancelActionView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
cancelActionView.setEnabled(false);
View doneActionView = actionBarButtons.findViewById(R.id.action_done);
doneActionView.setOnClickListener(new OnClickListener() {
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setCustomView(actionBarButtons);
edit_event_custom_actionbar.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="?attr/dividerVertical"
android:dividerPadding="12dp"
android:orientation="horizontal"
android:showDividers="middle" >
<!-- id must match corresponding menu item id -->
<TextView
android:id="@+id/action_cancel"
style="@style/EditEventCustomActionButton"
android:text="@string/cancel_label"
android:drawableLeft="@drawable/ic_action_cancel" android:padding="5dp" />
<!-- id must match corresponding menu item id -->
<TextView
android:id="@+id/action_done"
style="@style/EditEventCustomActionButton"
android:text="@string/abc_action_mode_done"
android:drawableLeft="@drawable/abc_ic_cab_done_holo_dark" android:paddingRight="5dp" />
</LinearLayout>
E aggiungere il codice al tuo /values/styles.xml:
<style name="EditEventCustomActionButton" parent="android:style/Widget.Holo.Light.ActionButton">
<item name="android:layout_height">match_parent</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_weight">1</item>
<item name="android:focusable">true</item>
<item name="android:textColor">#FFFFFF</item>
</style>
Un metodo semplice per disabilitare un tasto nell'azione barra è di salvare un riferimento al menu in onCreateOptionsMenu()
:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
mMenu = menu; // Save reference
return super.onCreateOptionsMenu(menu);
}
e quindi chiamare setEnabled()
sulla voce di menu per attivare o disattivare:
mMenu.findItem(R.id.my_action_item).setEnabled(false);
Non c'è bisogno di ri-creare il menu chiamando invalidateOptionsMenu()
.
- 1. Pulsante home della barra delle operazioni Android
- 2. Modifica posizione della barra delle azioni Android
- 3. ShareActionProvider senza barra delle azioni in Android
- 4. Cambia testo in modo dinamico per il pulsante della barra delle azioni di Android
- 5. Il pulsante Indietro della barra delle azioni non viene visualizzato in Android
- 6. Attiva/disattiva il cassetto di navigazione tramite il titolo della barra delle azioni
- 7. Pulsante "Indietro" sulla barra delle azioni - Android. Come tornare "indietro"?
- 8. come nascondere il pulsante nella barra delle azioni
- 9. Android - personalizzazione delle schede degli sherlock della barra delle azioni
- 10. Ignora pulsante SU nella barra delle azioni
- 11. Honeycomb Android - Modifica dello stile della barra delle azioni
- 12. Android: sovrapposizione della barra delle azioni Layout attività
- 13. Dimensioni dell'icona della barra delle azioni in Android 4.2
- 14. Android: Modifica delle azioni del pulsante Indietro
- 15. Separatore della barra delle linguette della barra delle azioni di Android
- 16. Il menu della barra delle azioni viene visualizzato sullo schermo
- 17. come aggiungere il pulsante di testo a barra delle azioni
- 18. Modificare il colore dell'icona delle impostazioni della barra delle azioni
- 19. Barra azioni Android
- 20. Altezza della barra delle azioni di modifica su Android JellyBean
- 21. Elementi della barra delle azioni Android come tre punti
- 22. Colore della barra delle azioni per lo styling - Android
- 23. Manca l'icona dell'app della barra delle azioni con Android 5
- 24. Stili della barra delle azioni contestuali
- 25. Stile della barra delle azioni contestuale?
- 26. Modifica dell'icona della barra delle azioni
- 27. Il sottomenu della barra delle azioni non funziona con actionLayout
- 28. Abilita/disabilita il menu della barra delle azioni Voce
- 29. Nativescript android rimuovere la barra delle azioni
- 30. Sovrapposizione della barra delle azioni non funzionante
Ma ho bisogno di ActionBar, ho i requisiti per l'applicazione. Devo continuare ad usare ActionBar e quando l'utente aggiunge un file devo disabilitare l'aggiunta di altri file (il pulsante per aggiungere file è in ActionBar). – Mediha
Oh pulsante di disabilitazione, modificato. Ho pensato di rimuovere la barra delle azioni, generalmente ciò che disabilita la barra delle azioni sembra implicare genericamente. – Slartibartfast
Questo è esattamente quello che ho fatto. Grazie. – Mediha