2015-02-13 4 views
0

Я добавил View в макет программно, чтобы нарисовать горизонтальную линию.Как установить фон для просмотра программным путем?

Ниже приведен код java.

// I want to add a view to ll 
    LinearLayout ll = (LinearLayout)findViewById(R.id.main); 

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    View view = new View(this); 
    ll.addView(view); 
    view.setLayoutParams(params); 

    // this method does not work. 
    view.setBackgroundDrawable(getResources().getDrawable(R.drawable.division_line)); 

мой division_line.xml в/Drawable является:

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

Я попытался применить division_line.xml к View, но он не работает. Какой метод следует использовать?

+0

Возможный дубликат [Android set background drawable programatically] (http://stackoverflow.com/questions/12523005/android-set-background-drawable-programmatically) –

+0

Кстати, вы можете использовать метод 'setBackgroundResource()' : 'view.setBackgroundResource (R.drawable.division_line);' –

ответ

0

view.setBackground (GetResources(). GetDrawable (R.drawable.division_line)) вместо view.setBackgroundDrawable (...)

и иметь в виду, что первый 2dp не так много, и вы добавляет представление без свойств макета, поэтому его размер равен 0px x 0px

вы можете сделать это по коду: view.setLayoutParams (новый AbsListView.LayoutParams (300, 300));

+0

Почему я должен использовать 'setLayoutParams() ', хотя я задал ширину drawable в' division_line.xml'? – soonoo

+0

Ширина в drawable только описывает ширину drawables, но если вы не устанавливаете какую-либо ширину на вашем макете, который использует drawable, вы ничего не увидите, потому что это не видно, извините. – neristance

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