Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Deshabilitar el botón Barra de acciones en Android

¿Es posible desactivar un botón en la barra de acciones de Android? Estaba mirando alrededor y no pude encontrar ningún fragmento de código para eso, estaba pensando que debería haber alguna forma fácil.

  • ¿Cómo puedo hacer que el botón "Arriba" de mi ActionBar funcione como el botón "Atrás" del teléfono?
  • Dynamic TextView en ActionBar
  • ¿Las lengüetas de ActionBar - fijas y Scrollable?
  • Cambiar el color de fondo de la barra de herramientas por programa no cambia Título de barra de herramientas Color de fondo
  • Android: Cómo eliminar la línea entre la barra de herramientas y la barra de estado
  • la búsqueda en la barra de acciones no se cerrará después de la búsqueda
  • Cuadro de diálogo de actividad con ficha
  • Establecer el icono al final de la barra de herramientas
  • 3 Solutions collect form web for “Deshabilitar el botón Barra de acciones en Android”

    1. Una vez que realice la acción del usuario cuando desee desactivar la barra de acción, establezca alguna bandera, diga disableButtonFlag .

    2. Llamar invalidateOptionsMenu() . Esto activará onCreateOptionsMenu que se invocará para regenerar su menú.

    3. Finalmente, modifique su onCreateOptionsMenu para deshabilitar el botón que desee dependiendo del estado de disableButtonFlag .

       if (disableButtonFlag) { menu.findItem(R.id.your_item).setEnabled(false); } else { menu.findItem(R.id.your_item).setEnabled(true); } 

      O más simplemente:

       menu.findItem(R.id.your_item).setEnabled(!disableButtonFlag); 

    Para los desarrolladores de Android que utilizan un botón de acción personalizado ActionBar (botones de acción Guardar y Cancelar), he intentado el siguiente código para desactivar el botón Cancelar de la siguiente manera:

    Código 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> 

    Y añada este código a su /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> 

    Puedes hacer algo así:

     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); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.