2017-01-20 6 views
0

У меня есть метод, который создает динамически массив ButtonКак динамически добавить вытяжку (XML-файл) на кнопки (сгенерированную динамически)

for(int i = 0; i < 10; i++){ 
    Button button = new Button(activity); 
    LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(200, 100); 
    button.setLayoutParams(lparams); 
    button.setTag(0); 
    buttonArray[i] = button; 
    layout.addView(button); 
} 

Я создал drawable (d.xml), что я должны применяться к кнопкам

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <stroke 
     android:width="1dp" 
     android:color="#FFFFFF"/> 
</shape> 

То, что я не в состоянии сделать это, чтобы применить d.xml к кнопкам, которые я создаю динамически.

Может кто-нибудь мне помочь? Заранее спасибо.

ответ

1

Используйте набор фон ресурс кнопки:

for(int i = 0; i < 10; i++){ 
    Button button = new Button(activity); 
    LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(200, 100); 
    button.setLayoutParams(lparams); 
    button.setTag(0); 
    button.setBackgroundResource(R.drawable.d); 
    buttonArray[i] = button; 
    layout.addView(button); 
} 
+1

Спасибо мужчина :) – MDP

1

Использование

button.setBackgroundResource(R.drawable.your_resource); 
+0

Спасибо мужчина :) – MDP

1

в вашем цикл, после button.setTag(0); сделать это button.setBackground(ContextCompat.getDrawable(this, R.drawable.d));

+0

Спасибо, человек :) – MDP

+0

добро пожаловать. :) –

1

После того, как вы создали свой фон вытяжку, вы можете примените это к динамически созданной кнопке в вашем коде.

Если минимальная сборка API 21 (Lollipop), а затем использовать

button.setBackground(activity.getDrawable(R.drawable.d) 

Вы также можете использовать setBackgroundDrawable для нижнего API.

Более подходящим решением может быть использование

button.setBackgroundResouce(R.drawable.d) 

Дайте те идти!

+1

Спасибо, человек :) – MDP

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