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

Выпадающая сверху панель - Android

Восстановить пароль Регистрация
 
crack007_cyber
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 13
31.01.2016, 23:10     Выпадающая сверху панель #1
Всем привет. Пытаюсь решить, как сделать выпадающую панель... По клику на иконке в ActionBar хочу чтобы выезжала вниз панель с настройками (набором кнопок)... Панель должна быть на пол экрана (не на весь).. кто-нибудь подскажет, каким компонентом лучше это реализовать? Или может быть есть примеры? В гугле не нашёл подходящего мне решения...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
31.01.2016, 23:37     Выпадающая сверху панель #2
crack007_cyber, поищите "android expand collapse animation"
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,836
Завершенные тесты: 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)*
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,836
Завершенные тесты: 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... а как убрать эту плашку? чтобы только тулбар разворачивался
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,836
Завершенные тесты: 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 не могу победить одну вещь... он когда выпадает, то контент который под ним - некрасиво смещается вниз... а мне хотелось бы чтоб он поверх выпадал
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,836
Завершенные тесты: 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 Панель контекстных действий без множественного выделения
Android Как сделать навигацию снизу и сверху?
Android Как делать панель изменяемой высоты?
Android Как сделать панель с кнопками внизу, которую можно проматывать
Android Как нарисовать imageView сверху остальных view?

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

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

Не по теме:

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

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

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