2015-04-20 2 views
0

Во-первых, извиняюсь, если этот ответ уже присутствует здесь, так как я искал несколько недель и еще ничего не нашел.Динамическое создание/удаление кнопок в Android

Я работаю над Android-приложением, которое должно позволить пользователю создавать и удалять кнопки. Я знаю, как обычно создавать кнопки статически, добавляя кнопку XML-файл и создавая его функциональность в файле JAVA.

Вместо этого у меня есть статическая кнопка, которую я назову «Create Button». Когда пользователь нажимает кнопку «Создать», им должна быть предоставлена ​​возможность добавить новую кнопку в текущую активность, что позволит им изменить название указанной кнопки и т. Д. Когда они закрывают приложение и открывают его обратно; кнопка, которую они добавили, все равно должна быть там. Аналогичным образом, они должны иметь возможность удалять кнопки.

Может кто-нибудь указать мне в правильном направлении? Большинство источников, с которыми я столкнулся, объясняют, как статически создавать кнопки, как я впервые упоминал.

Спасибо за помощь!

EDIT: Я был в состоянии вычислить некоторые вещи, основанные на обратной связи, которую мне дали.

До сих пор у меня есть следующий код в методе onOptionsItemSelected():

if (id == R.id.add_button) 
     { 
     Button myButton = new Button(this); 
     myButton.setText("Push Me"); 
     //myButton.setVisibility(View.VISIBLE); 
     return true;  
     } 

Я все еще немного запутался о том, как это может добавляться в макете. В основном, я смущен насчет вызова findViewById:

RelativeLayout layout = (RelativeLayout)findViewById(R.id.?); 

Какой идентификатор я должен использовать? В основном файле XML приложения отсутствует идентификатор самого макета. Это просто «RelativeLayout».

EDIT2:

На самом деле, я решил проблему. Спасибо за совет! Мне просто нужно было указать свой макет ID в файле XML. Я знал, что могу дать кнопки и т. Д. ID, но никогда не знал, что я смог сделать это для самого самого макета!

+0

Это очень общее question.This показывает, что вы не исследовались, прежде чем просить question.you может найти путь ответа легко, если вы пытаетесь искать, а не просить его сразу на SO –

+0

Смотреть это: http://stackoverflow.com/questions/14826822/adding-multiple-views-to-a-view/14827165#14827165 Я разместил код, в котором вы можете увидеть, как динамические представления могут быть добавлены, изменены и удалены. –

ответ

1

Создание кнопки -

Button myButton = new Button(this); 

Добавление текста к нему -

myButton.setText("Push Me"); 

Чтобы сделать кнопку видимой, вам нужно добавить его к виду, как это. Вы также можете добавить его в статически созданный вид -

LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout); 
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

ll.addView(myButton, lp); 

Удаление кнопки -

ll.removeView(myButton); 

Для дополнительных настроек, проверьте documentation.


Если вы создаете несколько кнопок, я рекомендую установить идентификатор. This пример дает понять.


Для создания кнопок, видимых после закрытия приложения, вам необходимо сохранить данные в памяти.Самый простой способ сделать это - сохранить запись кнопок и их спецификаций и сохранить их перед закрытием приложения. После открытия приложения вы можете прочитать сохраненные данные и создать соответствующие кнопки.

Для получения более подробной информации, проверьте Data Storing.

0
ViewGroup mViewGroup = (ViewGroup) findViewById(R.id.main_layout_id); 
mViewGroup.addView(yourButton, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
Смежные вопросы