Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Обсуждение уроков
Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение n0tb0dy » 20 май 2014, 09:57

Добрый день!
Скажите пожалуйста, а как то можно задать в файле меню xml фоновый цвет меню, текст пунктов меню и подсветки при нажатии.

[syntax=xml]
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"/>

</menu>
[/syntax]

По умолчанию фон меню черный, текст белы, подсветка при нажатии синяя.

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 09:08

Неожиданно столкнулся с проблемой "зоопарка" с дефаултным APK: (некоторые звери не хотят показывать меню (три точки) в правом углу ActionBar)

Запускаем Android Studio и создаем дефаултный HelloWorld
Изображение Изображение

Запускаем на Samsung S4 c офиц. прошивкой
и наблюдаем, что зверь не хочет дружить ( разве только дает увидеть меню после нажатия кнопки Menu )
Изображение Изображение

Другой же зверь Samsung Ace с прошивкой Cyanogen
наоборот готов дружить и работать
Изображение Изображение

Это дефаултный main.xml
[syntax=xml]<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="ru.teaching.myapplication4.app.MainActivity" >
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
</menu>[/syntax]

Это дефаултный код

Код: Выделить всё

package ru.teaching.myapplication4.app;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
У кого какие мысли ?

П.с. Если у кого не стоит последняя студия - могу прислать APK, чтобы вы потестили на своих зверях.
Последний раз редактировалось Atetc 27 май 2014, 10:34, всего редактировалось 4 раза.
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Foenix » 27 май 2014, 09:19

я конечно не особо в курсе по версиям, но встречала такие приложения. Для себя вывод сделала, что там где предполагается хард-клавиша "меню" (а есть она или нет - не важно) - там не показываются меню три точки.
Вообще таких приложений много, я часто пробую нажать на софтовую "меню" и часто вылазит меню, хотя никаких "признаков" существования меню не было. И часто это очень популярные приложения. Поэтому - смириться, так полагаю.
Возможно еще стоит поиграться с таргет-версиями в манифесте, или минимум-версией..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 09:23

ИМХО это не гуд - очень малый % юзеров догадается про то, что вообще есть меню в приложении ( пока очень очень не нужно будет )
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение n0tb0dy » 27 май 2014, 09:36

кстати о софтверной клавише меню на планшетах....

у меня на Galaxy Tab 7.7 она скрыта на домашнем экране к примеру по умолчанию... и в моем приложении эта клавиша тоже скрыта, а вот если запускаешь Navitel, то он каким то образом активирует эту клавишу и она становится видимой и по ней получаешь доступ в меню программы.

Подскажите пожалуйста как можно программно активировать и сделать видимой софтварную клавишу меню?

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 10:31

зверь Philips W6500
также не хочет дружить и показывать свои "три точки"
Изображение Изображение

Подскажите как сделать видимым меню в ActionBar на этих (и видимо многих) устройствах?
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android


Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 11:41

Тогда для чего форум? Чтобы гуглить? )))

Проблемка-то по теме урока и отнюдь не узкоспецифична )
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Foenix » 27 май 2014, 11:47

да, ты прав. Форум для того, чтоб кто-нибудь вместо тебя загуглил.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 11:57

Я думаю, для того, чтобы мы с вами писали о проблеме, гуглили и выкладывали решение проблемы ( тогда новички будут быстрее проходить первые грабли, учась на чужом опыте )

А гуглить и молчать про то, что касается всех - не по-отечески )
И наоборот узкоспецифичные проблемы лучше гуглить/решать молча и не зашлаковывать форум - такие посты нет интереса читать.
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение klblk » 27 май 2014, 12:18

Проблема в том что, тот кто может найти найдет в гугле, не создавая тему на форуме... а тот кто не может, не будет искать тему с ответом на свой вопрос, а просто создаст новую.
но в данном случае проблема может быть в незнании английской терминологии и гугление немного затрудняется.
"Трёхточечное меню" называется "menu overflow", зная это все ищется мгновенно.

Хотя лично мое мнение если есть hardware кнопка меню, то пользователь должен уметь ей пользоваться.

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 12:21

Atetc писал(а):Неожиданно столкнулся с проблемой "зоопарка" с дефаултным APK: (некоторые звери не хотят показывать меню (три точки) в правом углу ActionBar)
Запускаем на Samsung S4 c офиц. прошивкой
и наблюдаем, что зверь не хочет дружить ( разве только дает увидеть меню после нажатия кнопки Menu )
Изображение Изображение
Итак проблема решается следующим костылем, который нужно вставить после строки
setContentView(R.layout.activity_main);

Код: Выделить всё

try {
        ViewConfiguration config = ViewConfiguration.get(this);
        Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
        if(menuKeyField != null) {
            menuKeyField.setAccessible(true);
            menuKeyField.setBoolean(config, false);
        }
    } catch (Exception ex) {
        // Ignore
    }
И не забываем прописать импорты

Код: Выделить всё

import android.view.ViewConfiguration;
import java.lang.reflect.Field;
В результате живем и радуемся трем точкам в углу ActionBar
Изображение

Позже нашел статью еще http://blog.vogella.com/2013/08/06/andr ... as-a-menu/

П.с. осталось загадкой: почему на прошивке с Cyanogen эти три точки и без костыля прекрасно работают?
Последний раз редактировалось Atetc 29 май 2014, 07:28, всего редактировалось 2 раза.
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Foenix » 27 май 2014, 12:41

klblk писал(а): "Трёхточечное меню" называется "menu overflow", зная это все ищется мгновенно.
не задумывалась как называется, а нашла по "three dots". Первые три ссылки гугла - выложила :) Но оттуда же и узнала что это "menu overflow"
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Foenix » 27 май 2014, 12:42

Atetc писал(а):такие посты нет интереса читать.
мне интересно то, что ты вообще что-то тут читаешь)) многие если не большая часть - совсем не читают, а задают одни и те же вопросы снова и снова, создавая новые и одинаковые темы.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 12:56

Foenix писал(а):
Atetc писал(а):такие посты нет интереса читать.
мне интересно то, что ты вообще что-то тут читаешь)) многие если не большая часть - совсем не читают, а задают одни и те же вопросы снова и снова, создавая новые и одинаковые темы.
Читая от и до все комментарии к видеоурокам и тут на форуме, получаешь в разы больше информации и опыта, нежели чем просто прочтение книг или статей - скилл растет неимоверно - рекомендую такой подход в любой сфере )))
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Foenix » 27 май 2014, 13:09

Та ладно.. читать надо, конечно, но не преувеличивай значение написанного тут)
Системные знания важнее.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 13:19

Господа, подскажите!

А как на счет кастомизации меню из xml?
Изображение

Это будет описано в следующих уроках или дальше уже сами учимся?
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Foenix » 27 май 2014, 13:27

Кстати, вот какая мысль.
Не советую делать такое меню, и гугл со мной согласен. Нужно придерживаться стандартов андроида, а не тащить туда с десктопа всякую фигню.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Atetc
Сообщения: 45
Зарегистрирован: 02 май 2014, 13:13
Откуда: Уфа
Контактная информация:

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Atetc » 27 май 2014, 15:14

На самом деле интересует вот такое меню - вторая строка серая ( на содержимое не смотрите - это я пример формата привел )

Можно ли стандартными средствами реализовать ? или полюбому кастомизация ?

Изображение
Последний раз редактировалось Atetc 27 май 2014, 22:15, всего редактировалось 1 раз.
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Сообщение Foenix » 27 май 2014, 21:27

где тут меню?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить