Czy można wyłączyć przycisk na pasku czynności w systemie Android? Rozglądałem się dookoła i nie mogłem znaleźć w tym celu żadnego fragmentu kodu, myślałem, że powinien być jakiś łatwy sposób.Wyłącz przycisk paska czynności w Androidzie
Odpowiedz
Po wykonać akcję użytkownika, gdy chcesz wyłączyć pasek działań, ustaw jakąś flagę, powiedzmy
disableButtonFlag
.Zadzwoń pod
invalidateOptionsMenu()
. Spowoduje to wywołanieonCreateOptionsMenu
w celu ponownego wygenerowania menu.Na koniec zmodyfikuj swój
onCreateOptionsMenu
, aby wyłączyć żądany przycisk w zależności od stanudisableButtonFlag
.if (disableButtonFlag) { menu.findItem(R.id.your_item).setEnabled(false); } else { menu.findItem(R.id.your_item).setEnabled(true); }
Albo prościej:
menu.findItem(R.id.your_item).setEnabled(!disableButtonFlag);
można zrobić coś takiego:
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);
}
Ale powinien być włączony na początku, muszę wyłączyć później, po akcji użytkownika. Przeczytaj powyższy komentarz. Dzięki. – Mediha
Po prostu utwórz atrybut 'Menu' w swojej aktywności i zainicjuj go w' onCreateOptionsMenu'. – Brtle
Znalazłem sposób wywoływania invalidateOptionsMenu, ale w zasadzie było to. Dziękuję Ci. – Mediha
Dla programistów Androida, którzy są przy użyciu niestandardowego ActionBar
czyli (Save & Anuluj przycisków akcji), próbowałem poniższy kod, żeby wyłączyć Anuluj przycisku akcji w następujący sposób:
Kod 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>
I dodać ten kod do swojej /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>
Prosta metoda, aby wyłączyć przycisk w akcji pasek jest zapisanie odniesienia do menu w onCreateOptionsMenu()
:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
mMenu = menu; // Save reference
return super.onCreateOptionsMenu(menu);
}
a następnie zadzwonić setEnabled()
na pozycji menu, aby włączyć lub wyłączyć:
mMenu.findItem(R.id.my_action_item).setEnabled(false);
Nie ma potrzeby, aby ponownie utworzyć menu wywołując invalidateOptionsMenu()
.
- 1. Zmiana wysokości paska czynności na Androidzie JellyBean
- 2. Jak zadeklarować rozszerzenie paska narzędzi/paska czynności na Androidzie Lollipop?
- 3. Wyłącz przycisk blokady ekranu (zasilania) w Androidzie
- 4. Wyłącz przycisk Home w Androidzie ICS (4.0)
- 5. Przycisk tła paska przycisków
- 6. Wyłącz przycisk
- 7. element menu paska czynności onclick?
- 8. jak ukryć przycisk w pasku czynności
- 9. Jak zmienić rozmiar paska czynności
- 10. Wyłącz przycisk Drukuj w HtmlHelp
- 11. Wyłącz domyślnie przycisk AlertDialog
- 12. Wyłącz przycisk minimalizacji JFrame
- 13. okrągły przycisk w Androidzie
- 14. Podmenu paska czynności nie działa z actionLayout
- 15. Listening onClick paska czynności dla przycisku Home
- 16. Tablet Gmail, taki jak elementy paska czynności.
- 17. dno przycisk paska w Android
- 18. Android Honeycomb - Zmiana stylu paska czynności
- 19. Przesuwne zakładki wewnątrz zakładek paska czynności
- 20. Dodawanie paska czynności do listy aktywności
- 21. Usuń ikonę z paska czynności Xamarin
- 22. ShareActionProvider bez paska działań w Androidzie
- 23. Zmienianie tytułu paska zakładek w Androidzie
- 24. Wyłącz paski błędów w Planie paska Seaborn
- 25. Pływający przycisk czynności Przewiń dziwne zachowanie
- 26. Przycisk przełącznika - wyłącz funkcję przeciągnięcia
- 27. Javafx TextInputDialog Wyłącz przycisk OK
- 28. Przycisk Wyłącz, gdy żądanie AJAX
- 29. Przycisk Rozmiar obrazu w Androidzie
- 30. Kliknij przycisk słuchaczy w Androidzie
Ale potrzebuję ActionBar, mam wymagania dla aplikacji. Muszę nadal używać ActionBara i kiedy użytkownik dodaje jeden plik, muszę wyłączyć dodawanie kolejnych plików (przycisk do dodawania plików znajduje się w pasku akcji). – Mediha
Przycisk wyłączony, edytowany. Założyłem, że usunięto pasek akcji, ogólnie to, co wyłącza pasek akcji, wydaje się sugerować ogólnie. – Slartibartfast
To jest dokładnie to, co zrobiłem. Dziękuję Ci. – Mediha