2010-10-29 9 views
14

Ich kann nicht scheinen, eine benutzerdefinierte Teiler, mit einem Drawable, die ich definiert habe, zu arbeiten, wenn Sie eine ListActivity und nicht eine benutzerdefinierte ListView erstellen. Es sieht fast so aus, als wenn die VM ihre eigene ListView für mich erstellt, mit der ListActivity, verwendet sie ein Thema mit dem Standard-Teiler zur Verfügung gestellt; und wenn ich versuche, einen zu liefern, erscheinen überhaupt keine Teiler in der ListView.Ändern eines Teilers mit setDivider in einer ListActivity ohne eine benutzerdefinierte ListView?

Ich weiß, dass ich eine benutzerdefinierte ListView mit XML erstellen und Android: Teiler auf diesem ListView definieren kann, und dies erkennt meine benutzerdefinierte Teiler Drawable. Aber ich würde es vorziehen, die ListActivity eigene ListView zu erstellen, wenn ich herausfinden kann, wie ich meinen eigenen Teiler dazu bringen kann.

Hier ist der Code ich jetzt benutze:

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); 
    } 
} 

Antwort

36

ich es herausgefunden. Das Problem hatte nichts damit zu tun, dass ListActivity für mich eine ListView erzeugte. Es war, wie ich den Teiler im Java-Code definierte.

Es gibt zwei Möglichkeiten, die ich sehe die Trennlinie (Grenze zwischen Listview-Zeilen) auf einem Listview zu definieren, die automatisch von einem ListActivity aufgeblasen wird, wenn Sie die Farbe in XML definieren mögen:

Methode 1:

In res/Werte/Colors.xml, legen Sie die folgenden Schritte aus:

<resources> 
<color name="sage">#cceebb</color> 
</resources> 

In Ihrem ListActivity erstreckender Klasse, dies zu tun:

ListView lv = getListView(); 
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage)); 
lv.setDivider(sage); 
lv.setDividerHeight(1); 

Methode 2:

In res/Werte/Colors.xml:

<resources> 
<drawable name="sage">#cceebb</drawable> 
</resources> 

Und in Ihrer Klasse, die ListActivity erweitert:

ListView lv = getListView(); 
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage)); 
lv.setDivider(sage); 
lv.setDividerHeight(1); 
3

diesen Code Versuchen:

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack)); 
ListView lv = getListView(); 
lv.setDivider(getResources().getDrawable(R.drawable.divider2)); 
lv.setDividerHeight(2); 
3

Um Teiler in Listview programmatisch gesetzt:

Diese Code innerhalb

in Ihrem .java- Klasse setzen
ListView lv = (ListView) findViewById(R.id.lv); 
    lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider)); 
    lv.setDividerHeight(1); 

Erstellen Drawable: {res> ziehbar>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>