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

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

Войти
Регистрация
Восстановить пароль
 
ivan75238
2 / 2 / 0
Регистрация: 09.07.2015
Сообщений: 14
#1

Android XML элемент - Программирование Android

16.02.2016, 13:06. Просмотров 221. Ответов 3
Метки нет (Все метки)

Подскажите каким элементом можно реализовать всплывающие окно снизу с EditText'ом? Буду очень благодарен если дадите ссылку на похожую реализацию. 3-ий день не могу найти ответ.
0
Миниатюры
Android XML элемент  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2016, 13:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Android XML элемент (Программирование Android):

Android xml из интернета - Программирование Android
Оснакомился с этим уроком http://startandroid.ru/ru/uroki/vse-uroki-spiskom/142-urok-79-xmlpullparser-parsim-xml.html вроде всё...

Xml файлы в android приложении - Программирование Android
Добрый день , какой код должен быть в MainActivity.java что бы при на нажатии на кнопку в activity.xmд в scrollview выводился текст с...

Android клиент передача XML сообщений - Программирование Android
Здравствуйте. Имеется задача организовать общение приложения-клиента на Android с сервером посредством использования XML-сообщений....

Закомментировать текст XML в Android Studio - Программирование Android
Здравствуйте, начал потихоньку изучать Android Studio, после делфи непривычно ))))) Подскажите пожалуйста, как закомментировать текст...

Android Studio, файл activity_main.xml - Программирование Android
здесь понятно это название приложения package com.example.user.myapplication; здесь понятно это библиотеки import...

Как открыть клавиатуру Android без xml - Программирование Android
Всем привет, мне очень нужно открыть клавиатуру android без потребности xml файла(кроме manifest'а конечно). Я сам пока нуб в java,...

3
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
16.02.2016, 18:08 #2
ivan75238, можно разными способами.
Например, динамически создать через addView.
Можно прямо в разметке прописать и показывать этот элемент при определённых условиях, а потом скрывать.
Например, через RelativeLayout или FrameLayout.
Можно через диалоговое окно.
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
16.02.2016, 18:56 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
как вариант, да там можно многое вынести в стили, в ресурсы, но я оставил так что бы нагляднее и не сильно размазано

1. создаем класс
в код можно особо не вчитываться, создается диалог, стилизуется немного и вешается слушатель
Кликните здесь для просмотра всего текста
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
64
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AlertDialog;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
 
public class PopupDialog {
 
    private static EditText editText;
    private static AlertDialog dialog;
    private static OnDialogResult listener;
 
    public static AlertDialog create(Context context, final OnDialogResult listener) {
        PopupDialog.listener = listener;
        final View view = View.inflate(context, R.layout.popup_dialog, null);
        editText = (EditText) view.findViewById(R.id.editText);
        dialog = new AlertDialog.Builder(context).setView(view).create();
        view.findViewById(R.id.doneBtn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                done();
            }
        });
 
        editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_DONE) done();
                return false;
            }
        });
        setStyle(dialog);
        return dialog;
    }
 
    private static void done() {
        dialog.dismiss();
        if (listener != null) {
            String str = editText.getText().toString();
            int code = str.isEmpty() ? -1 : Integer.valueOf(str); // если поле пустое, возвращаем -1
            listener.onDialogResult(code);
        }
    }
 
    private static void setStyle(AlertDialog dialog) {
        Window window = dialog.getWindow();
        WindowManager.LayoutParams wlp = window.getAttributes();
        wlp.gravity = Gravity.BOTTOM;
        window.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        // если надо по ширине на весь экран то строку раскомментировать
        //wlp.width = WindowManager.LayoutParams.MATCH_PARENT;
        window.setAttributes(wlp);
    }
 
    interface OnDialogResult {
        void onDialogResult(int code);
    }
}

2. разметка диалога, файл popup_dialog.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/rounded_dialog"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="16dp">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="Введите присланный вам код подтверждения"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:textColor="#E3FFFFFF" />
 
    <EditText
        android:id="@+id/editText"
        android:imeOptions="actionDone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="24dp"
        android:background="@drawable/rounded_edittext"
        android:gravity="center_horizontal"
        android:hint="Код"
        android:inputType="number"
        android:minEms="6"
        android:padding="8dp"
        android:textColorHint="#E3000000" />
 
    <TextView
        android:id="@+id/doneBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Готово!"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:textColor="#E3FFFFFF" />
 
</LinearLayout>

3. в папку drawable кладем два файла - скругляшки углов для диалога и EditText
rounded_dialog.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#3CA469" />
    <corners android:radius="12dp" />
</shape>

rounded_edittext.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#E3FFFFFF" />
    <corners android:radius="4dp" />
</shape>

4. что бы диалог нормально возвращал код, надо что бы какой-то класс реализовал его интерфейс
допустим надо чтобы результат возвращался в активити, тогда пишем
Java
1
public class MainActivity extends AppCompatActivity implements PopupDialog.OnDialogResult {
и сам метод
Java
1
2
3
4
    @Override
    public void onDialogResult(int code) {
        Toast.makeText(this, "Код: " + code, Toast.LENGTH_SHORT).show();
    }
5. ну и наконец вызываем диалог, где-то в активити
Кликните здесь для просмотра всего текста
Java
1
2
3
4
        /* вызов диалога, первый параметр context, вызываем из активити, поэтому this
        * второй параметр - слушатель, куда возвращать результат из диалога
        * в этом примере интерфейс слушателя реализовывает активити, поэтому тоже this */
        PopupDialog.create(this, this).show();
6. PROFIT

Я не стал добавлять анимашки потому что клавиатура выезжает-уезжает и сам диалог ездит туда-сюда.
И еще. Чтобы клавиатура нормально "поднимала" диалог, в манифесте добавляем (adjustPan)
XML
1
2
3
4
        <activity
            android:name=".MainActivity"
            android:windowSoftInputMode="adjustPan"
            android:launchMode="singleTask">
Android XML элементAndroid XML элемент
4
ivan75238
2 / 2 / 0
Регистрация: 09.07.2015
Сообщений: 14
16.02.2016, 19:22  [ТС] #4
Спасибо за подробную инструкцию, очень подробно описано)))
0
16.02.2016, 19:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2016, 19:22
Привет! Вот еще темы с ответами:

Как создать файл (txt, xml) в android (Eclipse) - Программирование Android
Задача нужно создать excel файл и писать дуда данные, потом отправить по почте. Разобрался как работать с excel и подключил нужные...

Подключение бибилиотеки XML RPC в проект для Android Studio - Программирование Android
Всем привет. Хочу заюзать либу http://ws.apache.org/xmlrpc/client.html Скачал jar файлики (xmlrpc-client-3.1.3.jar,...

Android.support.v4.view.ViewPager одним xml+java файлом - Программирование Android
Пробую изучить примеры android.support.v4.view.ViewPager Нужно сделать (вместо длинющего активити с кучей кнопок) 3 &quot;закладки&quot;....

Android: трудности с отправкой запроса по url и обработкой в виде xml - Программирование Android
URL url = new URL(&quot;https://maps.googleapis.com/maps/api/geocode/xml?address=москва&quot;); DocumentBuilderFactory dbf =...


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

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

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