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

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

Войти
Регистрация
Восстановить пароль
 
crack007_cyber
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 13
#1

Выпадающая сверху панель - Программирование Android

31.01.2016, 23:10. Просмотров 620. Ответов 10
Метки нет (Все метки)

Всем привет. Пытаюсь решить, как сделать выпадающую панель... По клику на иконке в ActionBar хочу чтобы выезжала вниз панель с настройками (набором кнопок)... Панель должна быть на пол экрана (не на весь).. кто-нибудь подскажет, каким компонентом лучше это реализовать? Или может быть есть примеры? В гугле не нашёл подходящего мне решения...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2016, 23:10     Выпадающая сверху панель
Посмотрите здесь:

Как сделать навигацию снизу и сверху? - Программирование Android
Всем привет) Подскажите плиз) Как сделать навигацию снизу и сверху в андроиде например как в инстаграме) снизу tabHost, сверху viewpager,...

Как нарисовать imageView сверху остальных view? - Программирование Android
У меня есть listview с горизонтальной прокруткой. Мне надо нарисовать imageView в определенной позиции так, чтобы она перекрывала сверху...

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

Разместить панель внизу FrameLayout - Программирование Android
Имеется такой layout. В нем карта растянута на весь экран, а панель panelTools располагается внизу. <?xml version="1.0"...

Как делать панель изменяемой высоты? - Программирование Android
Как делать панель которую можно потянуть за края и она увеличивается (выезжает с низу в верх). Панель располагается поверх FrameLayout. ...

Панель контекстных действий без множественного выделения - Программирование Android
Возможно ли создать панель контекстных действий для ListView без множественного выделения? В примерах панель контекстных действий создаётся...

Убрать панель с названием приложения при редактировании лаяута - Программирование Android
Подскажите как можно избавится от bar-а где написано название приложения именно при редактировании лаяута. Так как если использовать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
31.01.2016, 23:37     Выпадающая сверху панель #2
crack007_cyber, поищите "android expand collapse animation"
Pablito
2456 / 1901 / 591
Регистрация: 12.05.2014
Сообщений: 6,709
Завершенные тесты: 1
01.02.2016, 12:52     Выпадающая сверху панель #3
как вариант, основная разметка активти
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootLayout"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <include layout="@layout/toolbar" />
 
    <!-- тут типа content layout и все такое-->
    
</android.support.design.widget.CoordinatorLayout>

файл toolbar.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateLayoutChanges="true">
 
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize" />
 
    <LinearLayout
        android:id="@+id/panel"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:orientation="horizontal"
        android:visibility="gone">
 
        <!--тут кнопки или что там надо-->
 
    </LinearLayout>
 
</android.support.design.widget.AppBarLayout>


предположим в активити уже инициализирована наша панель для кнопок (id = panel)
Java
1
panel = (LinearLayout) findViewById(R.id.panel);
и последнее, где-то там где будет обрабатываться нажатие на кнопку, которая будет показывать/убирать панель, пишем
Java
1
2
if (panel.getVisibility() == View.GONE) panel.setVisibility(View.VISIBLE);
        else panel.setVisibility(View.GONE);
например этот код можно поместить в onOptionsItemSelected()

будет показываться/прятаться с анимацией потому что в toolbal.xml указана строка android:animateLayoutChanges="true"
если стандартная анимация не утраивает - вместо setVisibility() прикручиваете свою
crack007_cyber
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 13
01.02.2016, 18:16  [ТС]     Выпадающая сверху панель #4
У меня при запуске Вашего примера вылетает эксепшен ((
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
61
62
63
02-01 18:14:49.322 13666-13666/com.example.name.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                Process: com.example.name.myapplication, PID: 13666
                                                                                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.name.myapplication/com.example.name.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:110)
                                                                                    at android.os.Looper.loop(Looper.java:193)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5299)
                                                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                    at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
                                                                                    at dalvik.system.NativeStart.main(Native Method)
                                                                                 Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
                                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                                                    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:305)
                                                                                    at android.app.Activity.setContentView(Activity.java:1952)
                                                                                    at com.example.name.myapplication.MainActivity.onCreate(MainActivity.java:14)
                                                                                    at android.app.Activity.performCreate(Activity.java:5272)
                                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)*
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151)*
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)*
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:110)*
                                                                                    at android.os.Looper.loop(Looper.java:193)*
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5299)*
                                                                                    at java.lang.reflect.Method.invokeNative(Native Method)*
                                                                                    at java.lang.reflect.Method.invoke(Method.java:515)*
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)*
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)*
                                                                                    at dalvik.system.NativeStart.main(Native Method)*
                                                                                 Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.CoordinatorLayout" on path: DexPathList[[zip file "/data/app/com.example.name.myapplication-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.name.myapplication-2, /vendor/lib, /system/lib]]
                                                                                    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                                    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
                                                                                    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
                                                                                    at android.view.LayoutInflater.createView(LayoutInflater.java:559)
                                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:469)*
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)*
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)*
                                                                                    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:305)*
                                                                                    at android.app.Activity.setContentView(Activity.java:1952)*
                                                                                    at com.example.name.myapplication.MainActivity.onCreate(MainActivity.java:14)*
                                                                                    at android.app.Activity.performCreate(Activity.java:5272)*
                                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)*
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)*
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)*
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151)*
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)*
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:110)*
                                                                                    at android.os.Looper.loop(Looper.java:193)*
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5299)*
                                                                                    at java.lang.reflect.Method.invokeNative(Native Method)*
                                                                                    at java.lang.reflect.Method.invoke(Method.java:515)*
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)*
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)*
                                                                                    at dalvik.system.NativeStart.main(Native Method)*
Pablito
2456 / 1901 / 591
Регистрация: 12.05.2014
Сообщений: 6,709
Завершенные тесты: 1
01.02.2016, 18:21     Выпадающая сверху панель #5
в файле build.gradle должна быть подключена библиотека
XML
1
compile 'com.android.support:design:23.1.1'
crack007_cyber
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 13
01.02.2016, 20:14  [ТС]     Выпадающая сверху панель #6
Работает! Спасибо!
Но под ActionBar висит плашка, а при onClick на моём Button, под нею разворачивается ToolBar... а как убрать эту плашку? чтобы только тулбар разворачивался
Pablito
2456 / 1901 / 591
Регистрация: 12.05.2014
Сообщений: 6,709
Завершенные тесты: 1
01.02.2016, 20:24     Выпадающая сверху панель #7
стоит потратить время на чтение, сейчас уже мало кто использует action bar
обычно делается так
- активити наследуется от AppCompatActivity
- задание стиля приложения выглядит примерно так
XML
1
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
- где-то в onCreate() активити определяем тулбар
Java
1
2
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
- ну и в разметке главной активти где-то должен быть
XML
1
2
3
4
5
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:minHeight="?attr/actionBarSize"/>
Это вкраце. Лучше почитать форум если не получится и пару статей как это делается. Потом будет легче и лучше. Многие вещи можно будет провернуть только с тулбаром, но не с экшнбаром.
crack007_cyber
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 13
01.02.2016, 21:10  [ТС]     Выпадающая сверху панель #8
Спасибо большое! Изучил в общих чертах. Но по выпадающему layout не могу победить одну вещь... он когда выпадает, то контент который под ним - некрасиво смещается вниз... а мне хотелось бы чтоб он поверх выпадал
Pablito
2456 / 1901 / 591
Регистрация: 12.05.2014
Сообщений: 6,709
Завершенные тесты: 1
02.02.2016, 11:46     Выпадающая сверху панель #9
можно весь код разметки?
crack007_cyber
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 13
02.02.2016, 22:01  [ТС]     Выпадающая сверху панель #10
У меня через фрагмент реализован PageView. Вот код первого файла:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootLayout"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:onClick="onClickPageLayout">
    <include layout="@layout/toolbar"
        android:id="@+id/include" />
 
    <android.support.v4.view.ViewPager
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/include" />
</android.support.design.widget.CoordinatorLayout>
А вот сам фрагмент:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootLayout"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <WebView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/webView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:onClick="onClickPageLayout" />
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
WebView сейчас на весь экран. А мне хотелось бы, чтоб было 1) тулбокс, 2) webview, 3) по клику на меню тулбокса вылезала панель...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2016, 11:43     Выпадающая сверху панель
Еще ссылки по теме:

Как сделать панель с кнопками внизу, которую можно проматывать - Программирование Android
Подскажите, как сделать такую панель? Внизу кнопки и они все не входят на экран, можно промотать вправо. Как такое сделать?

Выпадающая панель (спойлер) - Delphi
нужен компонент похожий на спойлер, но чтобы в нем можно было размещать другие компоненты(не только текст). Думаю сделать...

Выпадающая менюшка - DLE
Подскажите как из данного меню можно сделать выпадающие? Что бы допустим при клике на раздел Книги еще выпадали в низ подразделы? (CMS...

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

Выпадающая менюшка - jQuery
Есть меню &lt;ul&gt;&lt;li&gt;первая менюшка &lt;ul&gt;&lt;li&gt;ссылка&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt; &lt;li&gt;вторая менюшка &lt;ul&gt;&lt;li&gt;ссылка&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt; на js я...


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

Или воспользуйтесь поиском по форуму:
Pablito
03.02.2016, 11:43     Выпадающая сверху панель
  #11

Не по теме:

тяжелый случай, я сливаюсь с темы

Yandex
Объявления
03.02.2016, 11:43     Выпадающая сверху панель
Ответ Создать тему
Опции темы

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