2013-07-03 2 views
0

У меня есть XML-макет с одним TextViewВозможны ли статические и динамические макеты?

Теперь я хочу добавить 50 кнопок, которые я хочу добавить динамически в свой java-файл!.

Можно ли добавлять атрибуты в XML-файл через java-код? Или может ли деятельность иметь 2 макета за раз?

для например,

public class Options extends Activity 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.options); 
    Button but=new Button(this); 
    but.setText("Wassup"); 
    // How do I add this button to the layout ? 
} 

} 
+0

см. Это ... http: // stackoverflow.com/вопросы/5631913/add-a-button-dynamic-to-a-linearlayout-in-android может быть дубликатом. –

ответ

3

Можно ли добавлять атрибуты в XML-файл с помощью java-кода?

Нет, но вы можете добавить свойства к Views и Layouts, как вы делаете с setText(). resource Файлы не могут быть изменены после компиляции.

Или может ли деятельность иметь 2 макета одновременно?

Простой ответ: нет, но вы можете добавить другой макет и добавить его в текущий макет.

Пример того, что вы можете сделать, чтобы добавить Button

надуть корень layout и добавьте Buttons к нему с addView(). Что-то вроде

Layoutinflater inflater = (LayoutInflater) getSystemService 
    (Context.LAYOUT_INFLATER_SERVICE); 
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.layout_file); 
Button but=new Button(this); 
but.setText("Wassup"); 
// How do I add this button to the layout ? 
ll.addView(but); 

LayoutInflater

Или, если вы хотите, чтобы добавить его в layout в текущем файле вы можете просто использовать findViewById() и использовать addView() на том, что, чтобы добавить ваш Buttons к.

+0

Спасибо большое :) – Vaido

+0

Вы очень приветствуетесь – codeMagic

0

Да, это возможно. После setContentView(R.layout.options); получите контейнер с контейнером findViewById(). У вас будет ссылка на LinearLayout, RelativeLayout или что-то еще. После этого используйте накладной макет и программно вы можете добавить другие макеты или компоненты.

Надеюсь, это поможет!

+0

Я бы предположил, что, может быть, вы дадите ему закодированный пример. – yams

+0

@MarkBasler Я написал в свой профиль: Я не даю рыбу, я скучаю, чтобы немного научить рыбалку. Я знаю, что это было бы оценено, но немного используйте его мозг и Google. Ofc, если он хочет заплатить, я напишу код :) –

+0

Обратите внимание, что в принятом ответе был пример. Это не обязательно должно быть именно то, что им нужно. – yams

0

просто использовать layout.addView(), где расположение является ViewGroup, который вы получите по телефону findViewById (R.id.layoutId)

1

Учитывая у вас есть макет XML, как показано ниже:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@id/mainlayout" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 
</TextView> 

</LinearLayout> 

В ваш java-код после setContentView (R.layout.options); вы можете сделать следующее:

LinearLayout linearLayout=(LinearLayout)findViewById(R.id.mainlayout); 
Button button=new Button(this); 
linearLayout.addView(button); 

Теперь вы можете добавить столько кнопок, которые вам нравятся, в линейную компоновку, как показано выше.

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