Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
#1

Нажатие на элемент меню в Actionbar

13.11.2016, 13:07. Просмотров 578. Ответов 20
Метки нет (Все метки)

Доброго дня!
Приделал через appbar actionbar к активити. Вот xml:

XML
1
2
3
4
5
6
<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme">
 
</android.support.design.widget.AppBarLayout>
В onCreate добавляю кнопку ""Вверх":

Java
1
2
3
 ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
Создаю описание меню, чтобы засунуть в actionbar еще пару элементов (пока на примере один):
XML
1
2
3
4
5
6
7
8
9
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:sabd="http://schemas.android.com/apk/res-auto">
 
    <item
        android:id="@+id/action_share"
        android:title="@string/Share"
        android:icon="@drawable/ic_menu_share_holo_dark"
        sabd:showAsAction="ifRoom" />
</menu>
Создаю меню и вешаю обработчики нажатия:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.action_bar_menu, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            case R.id.action_share:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
На выходе получаю, то что хочу видеть. Но при нажатии на элемент меню "поделиться" граница подсветки этой кнопки меньше чем высота actionbar. Кнопка "вверх" работате отлично и при нажатии занимает всю высоту, а вторая кнопка уже. В чем проблема? И как можно сделать чтобы эти промежутки исчезли? На рисунке ниже попытался показать проблему. Пытался в стилях ковырять, не разобрался(
Буду рад любым подсказкам в этом направлении. Спасибо!
0
Миниатюры
Нажатие на элемент меню в Actionbar  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2016, 13:07
Ответы с готовыми решениями:

Сменна иконки на ActionBar при её нажатие
Здравствуйте! У меня на ActionBar должна быть иконка для включения и...

Не получается обработать нажатие на кнопку Home в ActionBar
в OnCreate прописал: ActionBar actionbar= getSupportActionBar(); ...

Свайп меню actionbar
есть код класса main public class main extends ActionBarActivity { ...

Не отображается пункт меню в ActionBar
Приветствую, Сделал меню &lt;menu...

ActionBar, анимированная иконка меню
Здравствуйте, необходимо добавить анимированное изображение левее иконки меню...

20
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
13.11.2016, 13:21 #2
Думаю, что padding или margin есть у этой кнопки. Поставьте их в ноль, тогда отступы уйдут...
0
Pablito
2713 / 2159 / 732
Регистрация: 12.05.2014
Сообщений: 7,533
Завершенные тесты: 1
13.11.2016, 13:25 #3
Цитата Сообщение от Lost_Angel Посмотреть сообщение
В чем проблема?
действительно, в чем проблема?
разработка не может идти дальше потому что пункт меню имеет отступы по краям?

Добавлено через 23 секунды
Цитата Сообщение от Antohsa Посмотреть сообщение
есть у этой кнопки.
читай внимательно - это пункт меню, а не кнопка
0
ExFau$t
547 / 497 / 109
Регистрация: 08.05.2012
Сообщений: 2,491
13.11.2016, 13:26 #4
А с чего ты взял, что размер иконки твоей должен быть эквивалентен размеру акшионбара?
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
13.11.2016, 13:28  [ТС] #5
Да, это пункт меню. Но как для него настроить эти отступы?
Забить и идти дальше?
Все равно придется вернуться)
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
13.11.2016, 13:30 #6
Цитата Сообщение от Паблито Посмотреть сообщение
читай внимательно - это пункт меню, а не кнопка
Вопрос явно стилистический, внешнего вида, дизайна, поэтому особой разницы не вижу....
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
13.11.2016, 13:31  [ТС] #7
А с чего ты взял, что размер иконки твоей должен быть эквивалентен размеру акшионбара?
Я так не думал. Но почему-то "вверх" занимает всю высоту акшенбара.
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
13.11.2016, 13:34 #8
Lost_Angel, не надо забивать... доделай до конца...

Попробуй погуглить на тему getActionBar() и потомков...

Добавлено через 42 секунды
Цитата Сообщение от Lost_Angel Посмотреть сообщение
Но почему-то "вверх" занимает всю высоту акшенбара.
Только не "вверх", а на "назад"....
0
Pablito
2713 / 2159 / 732
Регистрация: 12.05.2014
Сообщений: 7,533
Завершенные тесты: 1
13.11.2016, 13:34 #9
Цитата Сообщение от Lost_Angel Посмотреть сообщение
Но почему-то "вверх" занимает всю высоту акшенбара.
напиши письмо разработчикам библиотеки, делов на 10 минут, они 100% знают почему так задумано

Цитата Сообщение от Antohsa Посмотреть сообщение
поэтому особой разницы не вижу....
и в этом проблема, но бродить по темам и советовать что-либо, особо не разбираясь в вопросе - легко
1
ExFau$t
547 / 497 / 109
Регистрация: 08.05.2012
Сообщений: 2,491
13.11.2016, 13:38 #10
Цитата Сообщение от Lost_Angel Посмотреть сообщение
Я так не думал. Но почему-то "вверх" занимает всю высоту акшенбара.
Потому что это стандартный элемент меню, сделанный прямыми руками (относительно прямыми)))).

Добавлено через 1 минуту
Цитата Сообщение от Antohsa Посмотреть сообщение
Только не "вверх", а на "назад"....
homeButton
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
13.11.2016, 13:38 #11
Цитата Сообщение от Паблито Посмотреть сообщение
и в этом проблема, но бродить по темам и советовать что-либо, особо не разбираясь в вопросе - легко
Мне помогают и я пытаюсь, в меру сил и возможностей. Ничего зазорного в этом не вижу...
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
13.11.2016, 13:40  [ТС] #12
Тогда другой вопрос. Как вообще отключить реакцию на нажатие (в виде изменения цвета)? Чтоб вообще не видеть подсветку.
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
13.11.2016, 14:00 #13
Lost_Angel, точно так же.. сначала надо найти элемент программно...
0
Pablito
2713 / 2159 / 732
Регистрация: 12.05.2014
Сообщений: 7,533
Завершенные тесты: 1
13.11.2016, 14:14 #14
Цитата Сообщение от Antohsa Посмотреть сообщение
точно так же.. сначала надо найти элемент программно...
покажи мастер-класс, как это делается

а где сам Toolbar?
внутри AppBarLayout-а его не видно что-то
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
13.11.2016, 16:06 #15
XML
1
        android:icon="@drawable/ic_menu_share_holo_dark"
это твой айкон? он лежит в дравабл?
попробуй сначала андроидовский шер айкон он лежит в андроиде.

Добавлено через 2 минуты
вот так: "@android:drawable/ic_menu_share"
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
13.11.2016, 18:47  [ТС] #16
это твой айкон? он лежит в дравабл?
Не мой) я его из стандартного андроида вытащил. Просто к себе в дравбл перекинул.
"@android:drawable/ic_menu_share" попробовал. Результат тот же.
0
Pablito
2713 / 2159 / 732
Регистрация: 12.05.2014
Сообщений: 7,533
Завершенные тесты: 1
13.11.2016, 21:27 #17
Цитата Сообщение от Паблито Посмотреть сообщение
а где сам Toolbar?
внутри AppBarLayout-а его не видно что-то
ало
0
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
13.11.2016, 22:58  [ТС] #18
а где сам Toolbar?
когда я его там прописывал было тоже самое.
Так что имхо не в этом дело.
Но если что выглядел он так:
XML
1
2
3
4
5
6
7
8
<android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
 
    </android.support.design.widget.AppBarLayout>
0
ExFau$t
547 / 497 / 109
Регистрация: 08.05.2012
Сообщений: 2,491
13.11.2016, 23:08 #19
только прописывал и всё?
0
Pablito
2713 / 2159 / 732
Регистрация: 12.05.2014
Сообщений: 7,533
Завершенные тесты: 1
13.11.2016, 23:14 #20
Цитата Сообщение от Lost_Angel Посмотреть сообщение
Так что имхо не в этом дело
даже имхо есть
прикол в том, что у меня на куче версий начиная с 16 и до 25 включительно такого не наблюдается
а это значит что ты не показываешь часть кода или разметки, которые оказывают влияние на поведение элементов меню

тут каждый день кто-то доказывает, что "да я ничего не менял, больше никакого кода", а потом выясняется что там еще 10050 библиотек и 10 разметок с темами

итак:
1. православные используют Toolbar, а AppBarLayout - это просто обертка над тулбаром, нужна для тени на 5+ андроидах и может еще для чего-то
2. зачем на AppBar-е theme?
3. от чего наследуется активити?
4. что в файле styles.xm? и не нужно самому решать что показать, а что можно вырезать, типа пацаны разберутся - можно копипастить все
0
13.11.2016, 23:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2016, 23:14

Реализация меню требует API level 9, а actionbar-11. Что выбрать?
Реализация меню требует API level 9, а actionbar - 11. Разрываюсь на части...

Итем меню не реагирует на нажатие
Добрый день, возник небольшой курьёз, не могу сообразить. Беру тулбар,...

Нажатие на пункт меню срабатывает только со второго раза
Может кто знает, почему нажатие на пункт меню срабатывает только со второго...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru