Ich versuche, ListView textColor auf Schwarz zu setzen, da ich einen weißen Hintergrund verwende.
Hier ist meine MailActivity
public class MailActivity extends ListActivity {
String[] listItems = { "Compose", "Inbox", "Drafts", "Sent" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mails);
setListAdapter(new ArrayAdapter(this,
Android.R.layout.simple_list_item_1, listItems));
}
}
und mein XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="#FFFFFF">
<ListView
Android:id="@Android:id/list"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"/>
<TextView
Android:id="@Android:id/empty"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Empty set"
Android:textColor="#000000" />
</LinearLayout>
Ich bekomme den Hintergrund weiß, weiß aber nicht, wo ich den Vordergrund auf Schwarz setzen soll. Ich habe es in der XML probiert und es sieht so aus, als ob es nicht hilft.
Ok, hier sind einige Dinge, über die Sie sich im Klaren sein sollten:
Ich versuche das mit einem Codebeispiel zu erklären:
**** Beginnen wir mit dem ListItems-Layout **: Speichern Sie es in Ihrem res/layout
-Ordner Ihres Android-Projekts mit say ** list_black_text.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Definig a container for you List Item-->
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:gravity="center_vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<!-- Defining where should text be placed. You set you text color here-->
<TextView
Android:id="@+id/list_content"
Android:textColor="#000000"
Android:gravity="center"
Android:text="sample"
Android:layout_margin="4dip"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
/>
</LinearLayout>
Nun, ein einfaches Layout mit einer TextView
, um genau zu sein. Sie müssen TextView eine ID zugewiesen haben, um diese verwenden zu können.
Kommen Sie nun zu Ihrem Bildschirm-/Aktivitäts-/Chef-Layout. Wie ich bereits sagte, definieren Sie den Hintergrund für Ihren Bildschirm mit dem Android:background
-Attribut. Ich sehe, Sie haben auch dort ein TextView definiert, und ich vermute, Sie versuchen, Inhalt/Listenelement dort zu definieren, was überhaupt nicht benötigt wird.
Hier ist dein bearbeitetes Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="#FFFFFF">
<ListView
Android:id="@Android:id/list" Android:layout_width="fill_parent"
Android:layout_height="wrap_content"/>
<!-- REMOVED TEXT VIEW, AND KEEPING BACKGROUND WHITE -->
</LinearLayout>
Und vor allem, setzen Sie Ihren Adapter.
setListAdapter(new ArrayAdapter<String>(
this, R.layout.list_black_text, R.id.list_content, listItems));
Beachten Sie die Layout-Ressource, die wir an den Adapter R.layout.list_black_text
übergeben, und R.id.list_content
, die von uns deklarierte TextView-ID. Ich habe auch ArrayAdapter in String geändert, da es generisch ist.
Ich hoffe das erklärt alles. Markieren Sie meine Antwort als akzeptiert, wenn Sie damit einverstanden sind.
Unordentlich aber ein guter schneller Weg
Sie können dies auch mit einer schnellen Korrektur tun, wenn Sie nicht mit der Definition komplexer Layouts fortfahren möchten.
Wenn Sie den Adapter instanziieren, deklarieren Sie dazu eine innere Klasse, hier das Codebeispiel:
ArrayAdapter<String> adapter=new ArrayAdapter<String>(
this, Android.R.layout.simple_list_item_1, listItems){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view =super.getView(position, convertView, parent);
TextView textView=(TextView) view.findViewById(Android.R.id.text1);
/*YOUR CHOICE OF COLOR*/
textView.setTextColor(Color.BLUE);
return view;
}
};
/*SET THE ADAPTER TO LISTVIEW*/
setListAdapter(adapter);
my_styles.xml
und speichern Sie sie in res/values
.Fügen Sie den folgenden Code hinzu:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="ListFont" parent="@Android:style/Widget.ListView">
<item name="Android:textColor">#FF0000</item>
<item name="Android:typeface">sans</item>
</style>
</resources>
Fügen Sie Ihrer Activity
-Definition Ihren Stil als AndroidManifest.xml
-Attribut in Ihr Android:theme
hinzu, und weisen Sie den Namen des von Ihnen erstellten Stils als Wert zu. Zum Beispiel:
<activity Android:name="your.activityClass" Android:theme="@style/ListFont">
HINWEIS: Der Widget.ListView
kommt von hier . Überprüfen Sie auch das .
Ich habe den simple_list_item_1
(Alt + Klick) geklont und die Kopie in meinem res/layout
-Ordner abgelegt und in list_white_text.xml
umbenannt.
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@Android:id/text1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceListItemSmall"
Android:gravity="center_vertical"
Android:textColor="@color/abc_primary_text_material_dark"
Android:minHeight="?android:attr/listPreferredItemHeightSmall" />
Der Android:textColor="@color/abc_primary_text_material_dark"
wird auf meinem Gerät in Weiß übersetzt.
dann im Java
-Code:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_white_text, myList);
Sie müssen die Textfarbe im Layout * simple_list_item_1 * definieren, das das Layout jedes Ihrer Elemente definiert.
Sie legen die Hintergrundfarbe des LinearLayout und nicht der ListView fest. Die Hintergrundfarbe der untergeordneten Elemente des LinearLayout ist standardmäßig (in den meisten Fällen) transparent.
Und Sie legen die schwarze Textfarbe für die TextView fest, die nicht Teil Ihrer ListView ist. Hierbei handelt es sich um ein eigenes Element (untergeordnetes Element des LinearLayout).
verwenden Sie niemals getApplicationContext()
. Verwenden Sie einfach Ihre Aktivität als Kontext. Sehen Sie, ob das hilft.
Bitte überprüfen Sie hier: CommonsWare Antworten
wenn Sie Ihren Aktivitätsstil nicht festgelegt haben, zeigt er Ihnen schwarzen Hintergrund. Wenn Sie Änderungen vornehmen möchten, z. B. weißer Hintergrund, schwarzer Text der Listenansicht, ist dies ein schwieriger Prozess.
ADD Android: theme = "@ style/AppTheme" in Android Manifest .