Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.61
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
#1

Выпадающее меню - Программирование Android

11.11.2013, 10:11. Просмотров 4342. Ответов 11
Метки нет (Все метки)

Доброго времени суток.
Коллеги, подскажите как осуществить:
Есть ImageView, хочется чтобы при нажатии на него разворачивалась аккуратная меню на несколько item.
В поиске нашел инфу только про Expand collapse animation - но это собственно анимация. Каким образом реализовать именно само меню по клику на объект и задать ему нормальный вид.
Стандартные контекстные меню смотрятся убого, не хотелось бы к ним прибегать.

Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 10:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выпадающее меню (Программирование Android):

Выпадающее меню - Программирование Android
Приветствую всех! Подскажите, пожалуйста, что использовать, чтоб по клику на мой кликабельный объект, снизу вылазило меню с возможностью...

Произвольное выпадающее меню - Программирование Android
Здравствуйте, интересует изменение выпадающего меню. Каким образом можно сделать чтобы меню выпадало с верхнего левого угла полукругами как...

Выпадающее меню для каждого пункта ListView - Программирование Android
Здравствуйте! Как реализовать подобное меню в списке? Я придумал только с использованием spinner-а в каждом item's view-е, но...

По умолчанию меню тулбара является прозрачным и сливается с фоном, как изменить фон текста меню? - Программирование Android
Здравствуйте уважаемые форумчане! Возникла следующая проблема, я использую для создания меню в xml файле теги <menu> и <item>, но дело в...

Хочу сделать подписи к меню, меню у меня создано ListView, есть два массива, как их передать в адаптер? - Программирование Android
public class MainMenu extends ListActivity { public void onCreate(Bundle cicle) { super.onCreate(cicle); ...

Меню только по нажатию кнопки меню - Программирование Android
Нужно создать в приложении меню. Но так, чтобы оно всплывало только по нажатию кнопки меню на девайсе а не еще и в Action Barе приложения(...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 10:37 #2
стандартное меню можно кастомизировать на ваш вкус
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
11.11.2013, 11:11  [ТС] #3
Цитата Сообщение от dubok79 Посмотреть сообщение
стандартное меню можно кастомизировать на ваш вкус
Да, я догадывался =)
Не подскажите как?
Спасибо
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 11:16 #4
NOSC, наверное нет, т.к. поторопился с ответом
перепутал с другим объектом
Хотя с другой стороны меняя стиль активити меню тоже меняется, значит его можно изменить, как я не знаю. Буду следить за темой, может и сам научусь.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
11.11.2013, 15:50 #5
https://github.com/chemalarrea/DemoS...oSlidingDrawer
вот есть реализация выпадающего меню
(сам использую)
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
11.11.2013, 21:33  [ТС] #6
Цитата Сообщение от flashok Посмотреть сообщение
https://github.com/chemalarrea/DemoS...oSlidingDrawer
вот есть реализация выпадающего меню
(сам использую)
Спасибо, но к сожалению не то. У меня есть ImageView и хочется чтобы при нажатии на него вылазило бы меню под ImageView

Добавлено через 1 час 26 минут
Решил оставить обычное контекстное меню, но как то до меня не доходит, возможно ли сделать его по клику, а не по длительному нажатию???
Кто-то сталкивался??
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 21:48 #7
Для программного закрытия меню используйте метод closeOptionsMenu(), для открытия openOptionsMenu()
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
11.11.2013, 22:14  [ТС] #8
Цитата Сообщение от dubok79 Посмотреть сообщение
openOptionsMenu()
Можно пример? Внятных примеров гугл не показал =(

Спасибо
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 22:17 #9
а какой пример? просто openOptionsMenu(), если меню есть оно откроется
правда это не контекстное меню а вспылвающее

Добавлено через 1 минуту
Ну а вот и контекстное тоже есть:
public void openContextMenu (View view)

Added in API level 1
Programmatically opens the context menu for a particular view. The view should have been added via registerForContextMenu(View).

Parameters
view The view to show the context menu for.
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
12.11.2013, 06:39  [ТС] #10
Цитата Сообщение от dubok79 Посмотреть сообщение
public void openContextMenu (View view)
Все равно не понятно. У меня меню создается программно. Куда именно пойдет эта строчка?
Вот код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
      // TODO Auto-generated method stub
      switch (v.getId()) {
    case R.id.imageView8:
      menu.add(0, MENU_ABOUT, 0, "About");
      menu.add(0, MENU_DONATE, 0, "Donate");
      menu.add(0, MENU_EXIT, 0, "Exit");
      break;
      }}
    
    
      @Override
      public boolean onContextItemSelected(MenuItem item) {  
          // TODO Auto-generated method stub
          switch (item.getItemId()) {
          // пункты меню для tvColor
        case MENU_ABOUT:
            AlertDialog.Builder alert = new AlertDialog.Builder(this);
            alert.setTitle("Text");
            alert.setMessage("Text");
            alert.setNegativeButton("OK", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int whichButton) {
                    // Canceled.
                  }
                });
                 
                alert.show();
          
    }
        return false;  }
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
12.11.2013, 13:17 #11
тут пример. вроде работает как Вам нужно
ну или код под спойлером
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MainActivity extends Activity
    implements OnClickListener {
 
    private ImageView img1;
    private static final int CMENU1 = 1;
    private static final int CMENU2 = 2;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        img1 = (ImageView) findViewById(R.id.img1);
        img1.setOnClickListener(this);
        registerForContextMenu(img1);
        
    }
 
    public void onClick(View v) {
        final int id = v.getId();
        switch(id){
        case R.id.img1:
            v.showContextMenu();
        }
    }
 
    //создание контекстного меню
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(Menu.NONE, CMENU1, Menu.NONE, "Привет");
        menu.add(Menu.NONE, CMENU2, Menu.NONE, "Пока");
    }
    //обработка нажатия на пункты меню
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case CMENU1:
            Toast.makeText(getApplicationContext(), item.getTitle(), Toast.LENGTH_SHORT).show();
            break;
        case CMENU2:
            finish();
            break;
        default:
            return super.onContextItemSelected(item);
        }
        return true;
    }           
}
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
12.11.2013, 14:14  [ТС] #12
Цитата Сообщение от dubok79 Посмотреть сообщение
тут пример. вроде работает как Вам нужно
ну или код под спойлером
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MainActivity extends Activity
    implements OnClickListener {
 
    private ImageView img1;
    private static final int CMENU1 = 1;
    private static final int CMENU2 = 2;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        img1 = (ImageView) findViewById(R.id.img1);
        img1.setOnClickListener(this);
        registerForContextMenu(img1);
        
    }
 
    public void onClick(View v) {
        final int id = v.getId();
        switch(id){
        case R.id.img1:
            v.showContextMenu();
        }
    }
 
    //создание контекстного меню
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(Menu.NONE, CMENU1, Menu.NONE, "Привет");
        menu.add(Menu.NONE, CMENU2, Menu.NONE, "Пока");
    }
    //обработка нажатия на пункты меню
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case CMENU1:
            Toast.makeText(getApplicationContext(), item.getTitle(), Toast.LENGTH_SHORT).show();
            break;
        case CMENU2:
            finish();
            break;
        default:
            return super.onContextItemSelected(item);
        }
        return true;
    }           
}
Спасибо - то что надо.
Остался вопрос как ему положение другое задать, но это уже потом разберемся
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 14:14
Привет! Вот еще темы с ответами:

При нажатии на пункт меню скрыть его, и показать другой пункт меню - Программирование Android
Прошу помощи, как можно допустим при нажатии на пункт меню, его скрыть, и показать другой пункт меню? я делаю так : public boolean...

Выпадающее меню - разный размер шрифта для разных уровней меню - HTML, CSS
Есть у меня данный список, но возник вопрос: "как сделать чтобы в надписи буквы1 был шрифт 19px, а в выпадающем меню был шрифт 16px" ...

Выпадающее меню. Не фиксируется бордер раздела меню, при использовании подменю - HTML, CSS
Делаю выпадающее меню, почти все сделал, осталось по сути немного, и не могу закончить. Вот код: ...

Выпадающее меню - HTML, CSS
пишу авторизацию с помощью вконтаке для своего сайта. так как места в шапке для него не нашел решил засунуть его в выпадающее меню. В опере...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.11.2013, 14:14
Ответ Создать тему
Опции темы

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