С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
#1

Создание подкнопки динамически - Программирование Android

12.01.2015, 16:01. Просмотров 767. Ответов 22
Метки нет (Все метки)

В общем какое дело я создаю кнопки динамически в LinearLayout который их распологает горизонтально.

Java
1
2
3
4
5
6
LinearLayout layout = (LinearLayout) rootView.findViewById(R.id.buttonsView);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        layout.setGravity(Gravity.CENTER);
        final Button btn = new Button(getActivity());
        btn.setText("" + counter);
        layout.addView(btn);
Вот так они создаются одна за другой в горизонтальном положении, а теперь в этом горизонтальном списке мне нужно под последней созданной кнопкой, создать еще одну кнопку. Как на картинке.

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

Создать базу данных с(Создание функции БД, Создание процедуры БД, Создание тригера БД) - Программирование Android
В задание для курсовой работы по БД входят вот такие пункты: 1.2 Создание функции БД. 1.3 Создание процедуры БД 1.4 Создание...

Динамически созданные компоненты - Программирование Android
Здравствуйте, возник вопрос. есть Fragment на него в run time добавляются компоненты, после смены fragment и последующем восстановлении,все...

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

Создание таблиц динамически - Delphi
помогите пожалуйста! создал динамически таблицу tabl1:=TStringGrid.Create(form1); tabl1.Parent:=Form1; tabl1.Height:=120; ...

Создание таблицы динамически - Delphi БД
Здравствуйте всем. Возник вот такой вопрос: как создать новую таблицу имя таблицы чтобы взялось из edit.

Динамически создание переменных - C++ Builder
Всем день добрый. Вопрос такой Возможно ли создавать переменные динамически в цикле? Пример Имеется список с переменными ...

22
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
12.01.2015, 18:21 #16
Убрать @Override)
1
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
12.01.2015, 18:37  [ТС] #17
Какая то фигня получается) оно создает постоянно две кнопки, или я рукожоп или снежки не лепятся.

Метод создания кнопки
Кликните здесь для просмотра всего текста
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
final int btnSize = 160;
        final int btnSmallSize = 80;
        final int textSize = 25;
        final int smallTextSize = 16;
        final int margin = 25;
 
        LinearLayout layout = (LinearLayout) rootView.findViewById(R.id.buttonsView);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        layout.setGravity(Gravity.CENTER);
        final CreateButton btn = new CreateButton (getActivity());
        final LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(btnSize, btnSize);
        final LinearLayout.LayoutParams sp = new LinearLayout.LayoutParams(btnSmallSize, btnSmallSize);
        btn.setLayoutParams(vp);
        sp.setMargins(0, 0, margin, 0);
        vp.setMargins(0, 0, margin, 0);
        btn.setTextColor(Color.WHITE);
        btn.setTextSize(textSize);
        btn.setId(counter);
        btn.setText("" + counter);
        btn.setBackgroundResource(R.drawable.round_button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                stepNumber = ((TextView) v).getText().toString();
                for (int i = 0; i < allBtns.size(); i++) {
                    allBtns.get(i).setLayoutParams (sp);
                    allBtns.get(i).setTextSize(smallTextSize);
                }
                allBtns.get(v.getId() - 1).setLayoutParams (vp);
                allBtns.get(v.getId() - 1).setTextSize(textSize);
 
                //selectData();
            }
        });
        allBtns.add(btn);
        for (int i = 0; i < allBtns.size(); i++) {
            allBtns.get(i).setLayoutParams (sp);
            allBtns.get(i).setTextSize(smallTextSize);
        }
        allBtns.get(allBtns.size() - 1).setLayoutParams(vp);
        allBtns.get(allBtns.size() - 1).setTextSize(textSize);
        Button b = new Button(getActivity());
        if(type.equals("sub")) {
            btn.addSubButton(b);
            layout.addView(btn);
        } else {
            layout.addView(btn);
        }


ваше класс
Кликните здесь для просмотра всего текста
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
public class CreateButton extends LinearLayout {
 
    private Button mainButton;
 
    public CreateButton(Context context) {
        super(context);
        setOrientation(VERTICAL);
 
        mainButton = new Button(context);
        addView(mainButton);
 
    }
 
    public void setText(CharSequence text){
        mainButton.setText(text);
    }
 
    @Override
    public void setBackgroundResource(int resid) {
        mainButton.setBackgroundResource(resid);
    }
 
    public void setTextColor(int color) {
        mainButton.setTextColor(color);
    }
 
    public void setTextSize(float size) {
        mainButton.setTextSize(size);
    }
 
    @Override
    public void setOnClickListener(OnClickListener l) {
        mainButton.setOnClickListener(l);
    }
 
    public void addSubButton(Button subButton){
        addView(subButton);
    }
 
}


поясните плиз что не так

Добавлено через 2 минуты
Но вообще мне надо создавать эту же кнопку что я создаю раньше, только как саб кнопку) ТО есть в addSubView мне надо указывать этот же класс как кнопку?

Java
1
2
3
public void addSubButton(CreateButton subButton){
        addView(subButton);
    }
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
12.01.2015, 18:40 #18
Видимо type всегда равен sub. Всегда нужно добавлять в подкнопку точную копию основной?
1
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
12.01.2015, 18:42  [ТС] #19
Видимо type всегда равен sub.
Не, не всегда, у меня обычно оно равно main, sub только когда вовзращено что саб кнопку создавать надо. Но всегда создается и главная и под.

Всегда нужно добавлять в подкнопку точную копию основной?
Ну по сути они все одинаковые, так что да
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
12.01.2015, 20:26 #20
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот набросал кривоватое приложение)
2
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
12.01.2015, 20:59  [ТС] #21
фигасе, спасибо) буду разбираться

Добавлено через 27 минут
Не, как бы я не хотел но я не могу понять того кода) Буду думать как сделать так что бы работало по моему, ваш код я не понимаю
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 22:40 #22
Spelcrawler, интересно было раскрутить идею. Спс за код.

А чё высота лэйаута для кнопок не равна сумме bigSize и subSize

Шутка...
0
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
14.01.2015, 01:54  [ТС] #23
Spelcrawler, ваш вариант мне не подходил и я сделал свой, создал кастомный леяут с двумя кнопкам (доп кнопка не видимая) и по нужности просто делаю доп кнопку видимой) Вот такой говнокод, но зато подходящий сто процентов ))
0
14.01.2015, 01:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2015, 01:54
Привет! Вот еще темы с ответами:

Создание списка динамически - JavaScript
люди помогите начинающему программисту разобраться с проблемой. Хочу при выборе из одно Select'a чтобы создавался Option'ы второго...

Создание строки динамически - C++
Есть задание: Дана строка символов, состоящаяиз произвольного текста, слова разделены пробелами. Вывести на экран порядковый номер слова...

Создание компонента динамически - Delphi
Создал динамически edit, ограничил его по размерам, но что то видимо упустил. Просьба написать что пропустил Скрин: ...

Создание Label динамически - C#
Нужно создать n-ое количесво Label'ов, вот код: for (int i = 0; i &lt; n; i++) { Label lab = new Label(); ...


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

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

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