Changing a divider with setDivider in a ListActivity without a custom ListView?
Solution 1
I figured it out. The issue had nothing to do with the ListActivity generating a ListView for me. It was in how I was defining the divider in Java code.
There are two ways that I see to define the divider (border between ListView rows) on a ListView that is automatically inflated from a ListActivity, if you want to define the color in XML:
Method 1:
In res/values/colors.xml, put the following:
<resources>
<color name="sage">#cceebb</color>
</resources>
In your ListActivity-extending class, do this:
ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Method 2:
In res/values/colors.xml:
<resources>
<drawable name="sage">#cceebb</drawable>
</resources>
And in your class that extends ListActivity:
ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Solution 2
To set divider in listview programatically:
These code put inside in your .java Class
ListView lv = (ListView) findViewById(R.id.lv);
lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider));
lv.setDividerHeight(1);
Creating Drawable: {res > drawable > drawable_divider.xml}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ececec"></solid>
</shape>
Solution 3
Try this code:
searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);
hotshot309
I have the most experience with Java EE, Spring MVC, TortoiseSVN, Eclipse-based IDEs, Maven, and Jenkins. I've also used Javascript, CSS, JSPs, and various flavors for HTML for my work. I'd like to get back into writing Android apps.
Updated on July 21, 2020Comments
-
hotshot309 almost 4 years
I can't seem to get a customized divider, using a Drawable I've defined, to work when using a
ListActivity
and not creating a customListView
. It almost seems like when the VM creates its ownListView
for me, with theListActivity
, it uses a theme with the default divider provided; and if I try to provide one, no dividers appear in theListView
at all.I know that I can create a custom
ListView
using XML and define android:divider on thatListView
, and this does recognize my custom divider Drawable. But I would prefer to just let theListActivity
create its ownListView
, if I can figure out how to get my own divider working on it.Here's the code I'm using now:
public class Categories extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final String[] OPTIONS = { "Hello", "Goodbye", "Good Morning", "Greetings", "Toodaloo" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, OPTIONS); setListAdapter(adapter); ListView lv = getListView(); PaintDrawable sage = new PaintDrawable(R.drawable.sage); lv.setDivider(sage); lv.setDividerHeight(1); } }