Skip to content Skip to sidebar Skip to footer

Android Setting Linearlayout Background Programmatically

I have a situation where I need to set a background on a LinearLayout programatically. In my layout, I am setting my background using `android:background='?android:attr/activatedB

Solution 1:

I had the same problem and I fixed it using this piece of code.

The android.R.attr.* are pointers to the in a theme and not to the actual drawable resource defined. You have to use the TypedArray to access the id.

theView = this.inflater.inflate(R.layout.list_row_job_favorited, null);

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
  TypedArray a = mContext.obtainStyledAttributes(newint[] { android.R.attr.activatedBackgroundIndicator });
  int resource = a.getResourceId(0, 0);
  //first 0 is the index in the array, second is the   default value
  a.recycle();

  theView.setBackground(mContext.getResources().getDrawable(resource));
}

I used this in my custom list adapter when detects SDK upper and worked fine.

Solution 2:

try this line

rootLayout.setBackgroundResource(d);

instead of

rootLayout.setBackgroundDrawable(d);

Solution 3:

try this

rootLayout.setBackgroundResource(R.drawable.image);

Solution 4:

It's a bad idea doing it the way the accepted answer tells you to. The problem is that you also need to call the list's onItemCheckedStateChanged to update what's needed (the action bar title for example).

In that case all you need to do is simply call getListView().setItemChecked(position, true); when the item is checked and getListView().setItemChecked(position, false); when it's not checked.

Solution 5:

Please try the following code.

LinearLayout layout=(LinearLayout) findViewById(R.id.layoutImage);
layout.setBackgroundResource(R.drawable.bg);

Post a Comment for "Android Setting Linearlayout Background Programmatically"