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

Выпадающее меню - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.61
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
11.11.2013, 10:11     Выпадающее меню #1
Доброго времени суток.
Коллеги, подскажите как осуществить:
Есть ImageView, хочется чтобы при нажатии на него разворачивалась аккуратная меню на несколько item.
В поиске нашел инфу только про Expand collapse animation - но это собственно анимация. Каким образом реализовать именно само меню по клику на объект и задать ему нормальный вид.
Стандартные контекстные меню смотрятся убого, не хотелось бы к ним прибегать.

Спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dubok79
 Аватар для 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
 Аватар для dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 11:16     Выпадающее меню #4
NOSC, наверное нет, т.к. поторопился с ответом
перепутал с другим объектом
Хотя с другой стороны меняя стиль активити меню тоже меняется, значит его можно изменить, как я не знаю. Буду следить за темой, может и сам научусь.
flashok
 Аватар для 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
 Аватар для 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
 Аватар для 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
 Аватар для 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;
    }           
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 14:14     Выпадающее меню
Еще ссылки по теме:

Произвольное выпадающее меню Android
Android Меню только по нажатию кнопки меню
Android Боковое меню
Всплывающее меню Android
Android По умолчанию меню тулбара является прозрачным и сливается с фоном, как изменить фон текста меню?

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

Или воспользуйтесь поиском по форуму:
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;
    }           
}
Спасибо - то что надо.
Остался вопрос как ему положение другое задать, но это уже потом разберемся
Yandex
Объявления
12.11.2013, 14:14     Выпадающее меню
Ответ Создать тему
Опции темы

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