0

I'm developing a simple WebView app with a menu using Fragments, everything is working fine, but the text on the ListView is black and I dont know hoy to change it.

I want to know how to change the text color of a list view... here is my code:

package com.lfcchile;


private ActionBarDrawerToggle actionBarDrawerToggle;
private ActionBar actionBar;
private DrawerLayout drawerLayout;
private ListView navList;
private FragmentTransaction fragmentTransaction;
private FragmentManager fragmentManager;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setIcon(R.mipmap.ic_launcher);

    drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
    navList = (ListView) findViewById(R.id.navList);
    ArrayList<String> navArray = new ArrayList<String>();
    navArray.add("Inicio");
    navArray.add("Destacado");
    navArray.add("Tabla PL");
    navArray.add("Próximo Partido");
    navArray.add("Fragment 4");
    navArray.add("Fragment 5");
    navList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_activated_1, navArray);
    navList.setAdapter(adapter);
    navList.setOnItemClickListener(this);
    actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.opendrawer, R.string.closedrawer);
    drawerLayout.setDrawerListener(actionBarDrawerToggle);

    //ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(true);
    fragmentManager = getSupportFragmentManager();

    loadSelection(0);
}

private void loadSelection(int i){
    navList.setItemChecked(i, true);

    switch (i){
        case 0:
            HomeFragment homeFragment = new HomeFragment();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fragmentholder,homeFragment);
            fragmentTransaction.commit();
            break;

        case 1:
            MyFragment1 myFragment1 = new MyFragment1();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fragmentholder,myFragment1);
            fragmentTransaction.commit();
            break;

        case 2:
            MyFragment2 myFragment2 = new MyFragment2();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fragmentholder,myFragment2);
            fragmentTransaction.commit();
            break;

        case 3:
            MyFragment3 myFragment3 = new MyFragment3();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fragmentholder,myFragment3);
            fragmentTransaction.commit();
            break;

        case 4:

            break;

        case 5:

            break;

    }

}

@Override
public void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    actionBarDrawerToggle.syncState();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    } else if (id == android.R.id.home) {
        if (drawerLayout.isDrawerOpen(navList)) {
            drawerLayout.closeDrawer(navList);
        } else {
            drawerLayout.openDrawer(navList);
        }
    }

    return super.onOptionsItemSelected(item);
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
    loadSelection(position);

    drawerLayout.closeDrawer(navList);
}

Here is my XML

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawerlayout"
>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragmentholder"
    >

</FrameLayout>

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/navList"
    android:divider="@null"
    android:layout_gravity="start"
    android:backgroundTint="#8a0000"
    android:background="#8a0000" />

Default text color is black but I want to change it to white, how can I do it? Thanks in advance

King of Masses
  • 18,405
  • 4
  • 60
  • 77

3 Answers3

2

Another simplest way is to create a layout file containing the textview you want with textSize, textStyle, color etc preferred by you and then use it with the ArrayAdapter.

e.g. mytextview.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv"
    android:textColor="@color/font_content"
    android:padding="5sp"
    android:layout_width="fill_parent"
    android:background="@drawable/rectgrad"
    android:singleLine="true"
    android:gravity="center"
    android:layout_height="fill_parent"/>

and then use it with your ArrayAdapter as usual like

private ListView navList;
navList = (ListView) findViewById(R.id.navList);
ArrayList<String> navArray = new ArrayList<String>();
    navArray.add("Inicio");
    navArray.add("Destacado");
    navArray.add("Tabla PL");
    navArray.add("Próximo Partido");
    navArray.add("Fragment 4");
    navArray.add("Fragment 5");
ArrayAdapter<String> ad = new ArrayAdapter<String>(context,R.layout.mytextview,navArray);
    navList.setAdapter(ad);
King of Masses
  • 18,405
  • 4
  • 60
  • 77
0

Instead of using android.R.layout.simple_list_item_activated_1 as the template for your row inside your ArrayAdapter, create your own row xml file and set the text colour in there:

<LinearLayout
    android:width="match_parent"
    android:height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="row_text_view"
        android:textColor="#00ff00"
        android:width="wrap_content"
        android:height="wrap_Content" />

</LinearLayout>
PPartisan
  • 8,173
  • 4
  • 29
  • 48
0

你不要用系统提供的xml布局文件,你应该自己写一个xml布局,然后去引用它,而你就可以直接在你写的布局里面任意去修改文字的颜色。

Do not use xml layout file system, you should write your own xml layout, then to refer to it, but you can write in your layout inside straight to modify the color of any text.

Pepe Peng
  • 51
  • 2