2014-11-28 2 views
0

Я создал xml-макет, и все в порядке. При нажатии кнопки я хочу показать больше кнопок на макете. Каков правильный способ сделать это? Прямо сейчас я создаю кнопки на одном и том же xml и устанавливаю их видимость в GONE. Как только кнопка нажата и установите видимость для VISIBLE.Добавить виды на существующий макет

Правильно ли это делается? Схема становится немного сложнее с другими видами изображений после той же схемы

Спасибо большого

+0

извлеките свой макет в и покажите скрыть свой тег include –

ответ

2

Для начала: я не знаю, почему кто-то дали вам вниз на вопрос, так как это довольно просто вперед и ясно.

Теперь ответ.

Итак, все, для того, чтобы быть надлежащим образом «сделано», должно выполняться программно. Прежде чем я приведу вам какой-нибудь письменный код (в качестве примера), я немного объясню вам, как вы должны смотреть на это.

У вас есть основной файл XML, в котором у вас есть эта кнопка, которую вы хотите щелкнуть и щелкнув, чтобы на экране появилось больше кнопок. Чтобы добиться этого, создайте кнопки и сделайте их НЕВОЗМОЖНЫМИ или ВИДИМЫМИ в зависимости от о необходимости, на самом деле не очень хороший способ справиться с этим. Вы могли бы объяснить, почему? Ну, это явно не очень хорошо, потому что, хотя ваши кнопки невидимы, когда приложение запускается, кнопки, даже будучи невидимыми, создаются (рисуются). И это займет пространство и замедлит приложение.

Скажите, что вы хотите создать неопределенное количество кнопок, щелкнув по первой кнопке. Ну, вы даже не можете достичь этого, как вы описали в своем вопросе. Вы действительно ограничиваете себя, используя XML так много ,

Решение:

Итак, у вас есть файл XML, в котором у вас есть свой макет (относительный или линейный, не имеет значения, на данный момент) и Ваша кнопка, которая при нажатии создает кнопку.

Для того, чтобы получить ссылку на ваш XML-макет и вашу кнопку, вам необходимо предоставить им идентификатор. И вы делаете это внутри XML (я уверен, что вы это знаете, но я предпочитаю писать полные объяснения).

Предоставление идентификатора макета:

android:id="@+id/thelayout" 

Предоставление идентификатора макета:

android:id="@+id/button" 

(If you don't know where to add those IDs, comment it,I will help further) 

Теперь, вы можете обратиться к раскладке и кнопки из Явы, это где он получает удовольствие ,

Вы определяете макет и кнопку. ПРИМЕЧАНИЕ: Проверьте свой XML-файл !!! Если у вас есть RelativeLayout, вам нужно определить RelativeLayout, если у вас есть LinearLayout ... хорошо понятно.

Я собираюсь предположить, что у нас есть LinearLayout.

LinearLayout ll; 
Button btn; 
Button thenewbutton; 

ll= (LinearLayout)rootView.findViewById(R.id.thelayout); //The name we gave in XML 
btn = (Button)rootView.findViewById(R.id.button); 

What we need to do now, is to add a method which will do something when we click the buttom. 

btn.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      //Here we will handle the creation of the button; 

      thenewbutton = new Button(getActivity()); //Created the new button 
      thenewbutton.setText("One of the new buttons"); //Setted it the text in between the ""    
      setVisibility(View.VISIBLE); //Making it visible -like you were doing prolly. 

      //You can customize your button via methods.Write "thenewbutton." and eclipse will show you all the methods you can use in order to "play" with the new created button. 

      //Now, the button is created.All we need to do is to add it to the layout!Easy job.     

      ll.addView(thenewbutton); 

      return true; 
     } 
    }); 

И это все, в значительной степени.

Я объяснил это как можно подробней.Я знаю много, чтобы читать, но если вы хотите по-настоящему понять, чем за 3-5 минут прочитать и действительно пройти все, что я написал, и у вас будет еще один уровень понимания проблемы.

Если вам нужна дополнительная помощь, оставьте комментарий!

Cheers!

+0

О, и я забыл добавить - вы можете сделать то же самое с ImageViews. – Vlad

+0

Большое вам спасибо за подробное объяснение. Это очень мило с твоей стороны. На самом деле ключевым моментом, который я искал здесь, является объяснение, которое вы сделали в начале. Остальное я знаю, но не думал об использовании. Но было бы хорошо для кого-то нового и поиска ответов. +1 и Accepted :) – Snake

+0

Мне просто сложнее «позиционировать» представления, используя код, который был добавлен в xml. Это все. Мне было интересно, есть ли еще один известный метод, где вы можете сделать «вторичный» слой рисунка в другом xml, а затем наложить его на свой основной xml – Snake

Смежные вопросы