Autore Topic: Come cambiare colore di sfondo e delle TextView tramite SharedPreferences  (Letto 980 volte)

Offline Carontes

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos u8150
Salve, nella mia applicazione ho un pulsante del menu chiamato "Impostazioni", in cui posso scegliere quali colori impostare per lo sfondo di alcuni layout. Purtroppo combino insieme due layout per mostrare quello che voglio mostrare, e il problema è che posso impostare solo il colore di sfondo (che si trova in un layout), ma non il colore della TextView (che si trova nell'altro layout).

Layout main.xml:

Codice (XML): [Seleziona]
<?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:id="@+id/main_layout">
<EditText
android:id="@+id/editText1"
android:layout_height="65dip"
android:layout_marginTop="2dip"
android:hint="Scrivi"
android:layout_width="fill_parent" />
<ListView android:id="@+id/list"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:fastScrollEnabled="true">
</ListView>
</LinearLayout>

Layout listitem_row.xml

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_layout">
<TextView
android:id="@+id/textView1"
android:text="TextView"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="fill_parent">
</TextView>
<TextView
android:text="TextView"
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>

Activity principale:

Codice (Java): [Seleziona]
import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class SearchCocktail extends Activity{
EditText ed;
ListView lview;

String[] first = { "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight",     "Nine", "Ten"};

String[] second = { "Uno", "Due", "Tre", "Quattro", "Cinque", "Sei", "Sette", "Otto",  "Nove", "Dieci"};

int textlength = 0;
ArrayList<String> first_sort = new ArrayList<String>();
ArrayList<String> second_sort = new ArrayList<String>();

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ed = (EditText) findViewById(R.id.editText1);
lview = (ListView) findViewById(R.id.list);
lview.setAdapter(new MyCustomAdapter(first, second));
...........
public View getView(int position, View convertView, ViewGroup parent){

LayoutInflater inflater = getLayoutInflater();
View row;

row = inflater.inflate(R.layout.listitem_row, parent, false);

TextView textview = (TextView) row.findViewById(R.id.textView1);
TextView textview1 = (TextView) row.findViewById(R.id.textView2);

textview.setText(data_first[position]);
textview1.setText(data_second[position]);

return (row);
}
}

@Override
protected void onResume(){
super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = prefs.edit();

String colorePref = prefs.getString(PreferencesFromXml.COLORE_PREF,  PreferencesFromXml.COLORE_DEFAULT);
int coloreDiSfondo = Color.parseColor(colorePref);
findViewById(R.id.list).setBackgroundColor(coloreDiSfondo);
editor.commit();    
}
}

Activity PreferencesFromXml:

Codice (Java): [Seleziona]
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;

public class PreferencesFromXml extends PreferenceActivity{

public static final String COLORE_DEFAULT = "#000000";

public static final String COLORE_PREF = "colore";

public static final String TITOLO_PREF = "titolo";



@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    addPreferencesFromResource(R.xml.preferences);

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    Editor editor = prefs.edit();

    Preference titoloPrefs = findPreference(TITOLO_PREF);
    titoloPrefs.setSummary(prefs.getString(TITOLO_PREF, getString(R.string.titolo_custom)));
    titoloPrefs.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
    {
        public boolean onPreferenceChange(Preference prefs, Object value)
        {
            prefs.setSummary((CharSequence) value);
            return true;
        }
    });editor.commit();
}
}

Con questo codice posso cambiare solo il colore di sfondo del layout di main.xml ma voglio cambiare anche il colore delle TextView di listitem_row.xml. Mi piacerebbe cambiare i colori contemporaneamente (esempio: colore nero per lo sfondo e il colore bianco per il testo o il colore bianco per lo sfondo e il colore nero per il testo, ecc.) Come posso procedere? Grazie a tutti coloro in grado di rispondere.