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

Обсуждение уроков
mexo
Сообщения: 8
Зарегистрирован: 26 май 2012, 21:45

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

Сообщение mexo » 30 май 2012, 10:21

Спасибо. Все получилось )))

Sakralbar
Сообщения: 1
Зарегистрирован: 03 июл 2012, 14:07

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

Сообщение Sakralbar » 03 июл 2012, 14:17

123123
Последний раз редактировалось Sakralbar 18 ноя 2020, 22:09, всего редактировалось 1 раз.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 03 июл 2012, 17:20

Sakralbar писал(а):в результате при отображении строки в textview, получается ересь на местах itemID(для всех item'ов) и groupID(для group1)
Это ID, которые сгенерил Eclipse. Мы его попросили об этом, когда написали android:id="@+id/menu_add".
Вы можете заглянуть в файл R.java, который генерится автоматически и там увидите эти числа, только в шестнадцатеричном виде.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 09 июл 2012, 09:55

у меня такой общий вопрос по поводу меню: как сделать одно общее меню на все активити, что бы не прописывать в каждом активити создание меню? может можно как то реализовать отдельный класс а потом в активити его подключать?
R.id.team
Политика на форуме запрещена

vatanebe
Сообщения: 1
Зарегистрирован: 02 авг 2012, 00:00

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

Сообщение vatanebe » 02 авг 2012, 00:19

damager82 писал(а):
Sakralbar писал(а):Вопрос: при задании меню через xml, мы задали одной из групп id group1 (я так понимаю, другой группе присвоилось значение 0 автоматически). id всех элементов в меню представляют собой также строки. при этом методы getItemId, getGroupId возвращают значение int. в результате при отображении строки в textview, получается ересь на местах itemID(для всех item'ов) и groupID(для group1). Как исправить? Кто-то еще сталкивался с такой проблемой?
Это ID, которые сгенерил Eclipse. Мы его попросили об этом, когда написали android:id="@+id/menu_add".
Вы можете заглянуть в файл R.java, который генерится автоматически и там увидите эти числа, только в шестнадцатеричном виде.
Присоединюсь к вопросу, так как ответ не совсем удовлетворил. )
Насколько я понимаю, то, что генерится в файле R.java - это значение адреса в памяти для параметра из xml-файла. Тип этого значения - int. Это значение мы и получаем в этом месте
sb.append("\r\n groupId: " + String.valueOf(item.getGroupId()));

поскольку item.getGroupId() возвращает нам именно int.

Но проблема в том, чтобы для выбранного пункта меню вывести на экран string-значение, которое мы прописали в xml-файле, например здесь
<group android:id="@+id/group1" >

то есть вывести именно текст group1 !!!

Точно так же для
android:id="@+id/menu_add"

вывести на экран текст menu_add.

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

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

Сообщение math64 » 02 авг 2012, 07:31

rezak90 писал(а):у меня такой общий вопрос по поводу меню: как сделать одно общее меню на все активити, что бы не прописывать в каждом активити создание меню? может можно как то реализовать отдельный класс а потом в активити его подключать?

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

public class MenuActivity extends Activity {
// Работа с общим меню, в манифесте не прописывается
}

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

public class MainActivity extends MenuActivity {
// Главная Activity - работа с меню уже запрограммирована
}

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

public class SecondActivity extends MenuActivity {
// Вторая Activity - работа с меню уже запрограммирована
}

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

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

Сообщение math64 » 02 авг 2012, 07:50

vatanebe писал(а):Но проблема в том, чтобы для выбранного пункта меню вывести на экран string-значение, которое мы прописали в xml-файле, например здесь
<group android:id="@+id/group1" >

то есть вывести именно текст group1 !!!

Точно так же для
android:id="@+id/menu_add"

вывести на экран текст menu_add.
Для того, чтобы получить ресурс по имени (на примере каритинки):

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

	int id = getResources().getIdentifier(drawableName,
			"drawable", getPackageName());
	drawable = getResources().getDrawable(id);
Наборот:

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

	try {
		String resName = getResources().getResourceName(resid);
		int index = resName.indexOf(':');
		String packageName = resName.substring(0, index);
		int index2 = resName.indexOf('/');
		String typeName = resName.substing(index+1,index2);
		String entryName = resName.substring(index2+1, resName.length());
	} catch (NotFoundException e) {
		// Ресурс не найден
	}
Но в данном случае можно обйтись getTitle():

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

			String message = "Была нажата кнопка "+item.getTitle();
			Toast.makeText(this, message, Toast.LENGTH_SHORT)
				.show();

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 05 авг 2012, 19:49

Здравствуйте, видел в єтой теме вопрос, но не видел на него ответа.

Создаю по вашему уроку меню, но мне оно лезет в ряд, тоисть например 4 штуки, друг за другом. А нужно 2 ряда по 2 и внизу. Версия SDK 15, Android 4, как манипулировать способом отображения меню?
Спасибо.

k.chaiko
Сообщения: 21
Зарегистрирован: 02 авг 2012, 17:23

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

Сообщение k.chaiko » 05 авг 2012, 19:55

JDev писал(а):Здравствуйте, видел в єтой теме вопрос, но не видел на него ответа.

Создаю по вашему уроку меню, но мне оно лезет в ряд, тоисть например 4 штуки, друг за другом. А нужно 2 ряда по 2 и внизу. Версия SDK 15, Android 4, как манипулировать способом отображения меню?
Спасибо.
Неочень вас понял, распишите более детально что вы хотите, а что есть на деле у вас ??
А вообще меню кастомизировать тяжко...Вы юзаете OptionsMenu, ContextMenu или PopupMenu ??

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 05 авг 2012, 20:04

JDev писал(а):Здравствуйте, видел в єтой теме вопрос, но не видел на него ответа.

Создаю по вашему уроку меню, но мне оно лезет в ряд, тоисть например 4 штуки, друг за другом. А нужно 2 ряда по 2 и внизу. Версия SDK 15, Android 4, как манипулировать способом отображения меню?
Спасибо.
http://developer.android.com/guide/topics/ui/menus.html на все вкусы меню, и я так понял вам нужно сгруппировать меню, тогда подпункт Creating Menu Groups
R.id.team
Политика на форуме запрещена

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 05 авг 2012, 20:06

Я хочу получить такое же меню как в этом уроке.
тоисть если обозначить крестиком пункт меню, то в уроке получается вот так:
----------
| |
| |
| |
| x x x |
| x x x |
-----------

а у меня получается вот так:

тиком пункт меню, то в уроке получается вот так:
----------
| |
| x |
| x |
| x |
| x |
| x |
| x |
-----------

Самое главное OptionsMenu где в эмуляторе на кнопку Menu жмется.
Спасибо.

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 05 авг 2012, 20:10

rezak90 писал(а):
JDev писал(а):Здравствуйте, видел в єтой теме вопрос, но не видел на него ответа.

Создаю по вашему уроку меню, но мне оно лезет в ряд, тоисть например 4 штуки, друг за другом. А нужно 2 ряда по 2 и внизу. Версия SDK 15, Android 4, как манипулировать способом отображения меню?
Спасибо.
http://developer.android.com/guide/topics/ui/menus.html на все вкусы меню, и я так понял вам нужно сгруппировать меню, тогда подпункт Creating Menu Groups
Да, видел я это, дык дело в том, что делаю все так же, а оно все в один ряд.
В моем визуальном изображении меню между крестиками должны быть пробелы... Я думаю так понятно, если нет, выставлю скриншоты.
Я как бы с Явой дружу неплохо, а вот сегодня начал Android ковырять, многие нюансы пока непонятны... Вот.. как этот.. :(

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 05 авг 2012, 20:18

Не получается все-равно.
Вот меню:

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

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/reisen"
        android:icon="@drawable/reisen"
        android:title="@string/reisen"/>
    <item
        android:id="@+id/help"
        android:icon="@drawable/help"
        android:title="@string/help"/>
</menu>
Картинок не берет, причем картинки в формате png и с маленькой буквы поместил во все папки "drawable".

Выдает меню снизу в формате

-------
reisen
-------
help
-------

а мне нужно в формате

reisen | help

снизу растянуто на всю ширину.

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

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

Сообщение math64 » 05 авг 2012, 20:36

Не знаю как в Андроид 4, а в 2.3.3 этим управлять нельзя -если влезет по длине строк, будет 2 строки по 3 пункта, если текст слишком длинный - будет 3 строки по 2 пункта, 6 строк по 1 пункту (как у тебя) - не будет никогда, не влезающий текст будет обрезан. Т.е. на разных устройствах меню может выглядеть по разному. Если нужен одинаковый вид на всех устройствах - используй PopupWindow.

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 05 авг 2012, 20:40

Понимаю, дык обычное меню, может в 4 оно поменялось, буду ждать, может кто знает что к чему, может кто сталкивался.
Спасибо за ответ.

Аватара пользователя
npocma4ok
Сообщения: 2
Зарегистрирован: 16 авг 2012, 11:21

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

Сообщение npocma4ok » 23 авг 2012, 08:22

странно, но у меня показывает все шесть элементов меню в любом случае - отмечен чекбокс или нет.

2JDev насколько я понял это фишка ICS

Аватара пользователя
npocma4ok
Сообщения: 2
Зарегистрирован: 16 авг 2012, 11:21

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

Сообщение npocma4ok » 23 авг 2012, 08:39

npocma4ok писал(а):странно, но у меня показывает все шесть элементов меню в любом случае - отмечен чекбокс или нет.
Нашел ошибку, все работает.

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

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

Сообщение Xroft » 11 сен 2012, 20:27

math64 писал(а):
rezak90 писал(а):у меня такой общий вопрос по поводу меню: как сделать одно общее меню на все активити, что бы не прописывать в каждом активити создание меню? может можно как то реализовать отдельный класс а потом в активити его подключать?

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

public class MenuActivity extends Activity {
// Работа с общим меню, в манифесте не прописывается
}

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

public class MainActivity extends MenuActivity {
// Главная Activity - работа с меню уже запрограммирована
}

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

public class SecondActivity extends MenuActivity {
// Вторая Activity - работа с меню уже запрограммирована
}
Доброго времени суток!
Уважаемые "жители" :) форума, подскажите новичку...
Актуально на самом деле ... Есть идея создать вверху всех Активити панель, так сказать общее меню (как например в Windows программах, Файл, Вид, Сервис, Справка и т.д.) И, если класс обработки этого меню можно подключать как SecondActivity extends MenuActivity, то ...
1. Вопрос - Если у MainActivity уже есть extends ListActivity, как мне к нему еще привязать класс MenuActivity ?
2. Вопрос - Как это реализовывается в xml? Надо в каждом layout копипастить панель? Или есть возможность в сам xml вставлять ссылку на другой xml?
Мозгом понимаю, что должно быть все просто и приятно ...:)

Заранее спасибо за ответ.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

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

Сообщение AndreyI » 11 сен 2012, 21:19

Чтобы включить в разметку xml содержимое другой разметки нужно использовать тэг include
к примеру, у нас имеется файл с разметкой menu.xml помещаем следующий фрагмент в нужное место

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

 <include
        layout="@layout/menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
Первый вопрос не понял. Что за класс MenuActivity?

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

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

Сообщение Xroft » 11 сен 2012, 21:35

AndreyI писал(а):Чтобы включить в разметку xml содержимое другой разметки нужно использовать тэг include
к примеру, у нас имеется файл с разметкой menu.xml помещаем следующий фрагмент в нужное место

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

 <include
        layout="@layout/menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
Первый вопрос не понял. Что за класс MenuActivity?
За второй вопрос - Спасибо большое.

По поводу первого ...
Есть идея создать вверху всех Активити панель (это второй вопрос:)), так сказать общее меню (как например в Windows программах, Файл, Вид, Сервис, Справка и т.д.)
Можно ли 1 раз написать класс, который будет отрабатывать эту панель (слушатель нажатия на кнопки и т.д.) и дальше во всех активити приложения просто подключать этот класс. Т. е. не переписывать в каждом активити заново слушатели на меню.

Заранее спасибо

Ответить