Привет, Я разрабатываю приложение для Android. В моем приложении я использую действие Шерлока. Я определил несколько пунктов меню в экшен-бар, как в следующем образомЭлемент меню панели действий Android с действиемLayout не работает должным образом
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/card_menu"
android:actionLayout="@layout/action_button"
android:showAsAction="always"
android:title="cards">
<menu>
<item
android:id="@+id/C1"
android:title="C1"/>
<item
android:id="@+id/C2"
android:title="c2"/>
<item
android:id="@+id/C3"
android:title="C3"/>
</menu>
</item>
<item
android:id="@+id/notification"
android:actionLayout="@layout/notification_icon"
android:icon="@drawable/notification"
android:showAsAction="always"
android:title="Notifications"/>
<item
android:id="@+id/filter"
android:icon="@drawable/filter"
android:showAsAction="always"
android:title="Filter"/>
</menu>
и мой action_button выглядит следующим образом:
<?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="wrap_content">
<ImageView
android:id="@+id/menu_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/spinner_ab_focused_maroon"/>
<TextView
android:id="@+id/menu_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imageView0"
android:text="C1"/>
</RelativeLayout>
Теперь отображается все, но моя проблема в том, что, когда я нажимаю на card_menu item
где Я определяю подменю, а также определяю макет действия. Он не показывает эти подменю. Мои другие пункты меню работают правильно. Только когда я определяю макет действия для моего элемента, который содержит подменю, которые я не могу отобразить подменю. Если я удалю макет действия, он отлично работает.
Я знаю, если мы определяем макет действия для элемента, тогда мы должны вручную обработать функцию прослушивания кликов. я сделал это в следующий способ
final MenuItem item = menu.findItem(R.id.card_menu);
item.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onOptionsItemSelected(item);
Toast.makeText(getActivity(), "click on menu", Toast.LENGTH_SHORT).show();
}
});
Я могу справиться щелкнуть событие для этого элемента, но не смог показать выпадающие пункты меню подменю.
Как решить эту проблему?
Привет Ericharlow спасибо за ценную помощь .. спасибо много. ваше решение работает для меня. Я искал это решение с давних времен. Теперь единственная проблема заключается в том, что список подменю находится в правом верхнем углу.его не приходят как обычные .. Я хотел отобразить его под моей панелью действий .. Как переместить его в нужное место .. thankx снова за помощью .. – nilkash
еще одна проблема заключается в том, что он не работает над более старой версией Android-устройств, которые он выполняет, но не показывать мои подменю. Как это решить. Поддерживает ли библиотека Шерлок это или нет. спасибо ... – nilkash
@nilkash вам удалось использовать actionBarSherlock с пользовательским макетом для элемента action, даже на старых API-интерфейсах Android? странная вещь, которую я получаю от нее, заключается в том, что она не доступна для кликов, и когда я перехожу к другому виду, она может обрабатывать событие click, которое произошло раньше. –