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

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

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

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

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

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

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

Выпадающее меню для каждого пункта ListView
Здравствуйте! Как реализовать подобное меню в списке? Я придумал только с...

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

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

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

11
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 10:37 #2
стандартное меню можно кастомизировать на ваш вкус
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
11.11.2013, 11:11  [ТС] #3
Цитата Сообщение от dubok79 Посмотреть сообщение
стандартное меню можно кастомизировать на ваш вкус
Да, я догадывался =)
Не подскажите как?
Спасибо
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 11:16 #4
NOSC, наверное нет, т.к. поторопился с ответом
перепутал с другим объектом
Хотя с другой стороны меняя стиль активити меню тоже меняется, значит его можно изменить, как я не знаю. Буду следить за темой, может и сам научусь.
0
flashok
87 / 89 / 1
Регистрация: 14.02.2009
Сообщений: 293
11.11.2013, 15:50 #5
https://github.com/chemalarrea/DemoS...oSlidingDrawer
вот есть реализация выпадающего меню
(сам использую)
0
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 минут
Решил оставить обычное контекстное меню, но как то до меня не доходит, возможно ли сделать его по клику, а не по длительному нажатию???
Кто-то сталкивался??
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
11.11.2013, 21:48 #7
Для программного закрытия меню используйте метод closeOptionsMenu(), для открытия openOptionsMenu()
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
11.11.2013, 22:14  [ТС] #8
Цитата Сообщение от dubok79 Посмотреть сообщение
openOptionsMenu()
Можно пример? Внятных примеров гугл не показал =(

Спасибо
0
dubok79
324 / 122 / 10
Регистрация: 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.
0
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;  }
0
dubok79
324 / 122 / 10
Регистрация: 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;
    }           
}
1
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;
    }           
}
Спасибо - то что надо.
Остался вопрос как ему положение другое задать, но это уже потом разберемся
0
12.11.2013, 14:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 14:14
Привет! Вот еще темы с решениями:

При нажатии на пункт меню скрыть его, и показать другой пункт меню
Прошу помощи, как можно допустим при нажатии на пункт меню, его скрыть, и...

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

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

выпадающее меню
Добрый день! есть выпадающая менюшка, которая работает везде, но не в битриксе...


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

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

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