2012-10-26 7 views
8

Ich versuche, einen Spinner mit einem ArrayAdapter programmgesteuert zu erstellen. Dies geschieht in einem Closed-Source-Jar als Teil eines Android-Bibliotheksprojekts und ich habe keinen Zugriff auf Ressourcen.Android Spinner und Array-Adapter programmgesteuert

Ich möchte wissen, wie Sie das Layout und die Textansicht anpassen, die den Spinner anzeigt.

--EDIT--
Derzeit verwende ich den folgenden Code

ArrayAdapter<T> spinnerData = new ArrayAdapter<T>(this, Android.R.layout.simple_spinner_item, T[]); 

spinner.setAdapter(spinnerData); 

Was geschieht, ist, dass ich nicht die Größe der Schriftart steuern kann, Farben oder irgendetwas anderes. Wenn ich auf den Spinner klicke, um etwas auszuwählen, sind alle Optionen in wirklich kleinem Text. Ich möchte die Darstellung auf dem Bildschirm ändern können.

+1

werden Sie bitte mehr klar .. ??? –

Antwort

14

Erstellen Sie einfach einen benutzerdefinierten ArrayAdapter und definieren, wie die Spinner Textview in diesem getDropDownView Methode des Adapters aussehen sollte

public class CustomizedSpinnerAdapter extends ArrayAdapter<String> { 

private Activity context; 
String[] data = null; 

public CustomizedSpinnerAdapter(Activity context, int resource, String[] data2) 
{ 
    super(context, resource, data2); 
    this.context = context; 
    this.data = data2; 
} 
    ... 

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) 
{ 
    View row = convertView; 
    if(row == null) 
    { 
     //inflate your customlayout for the textview 
     LayoutInflater inflater = context.getLayoutInflater(); 
     row = inflater.inflate(R.layout.spinner_layout, parent, false); 
    } 
    //put the data in it 
    String item = data[position]; 
    if(item != null) 
    { 
     TextView text1 = (TextView) row.findViewById(R.id.rowText); 
     text1.setTextColor(Color.WHITE); 
     text1.setText(item); 
    } 

    return row; 
} 
... 
} 

und setzen Sie diesen Adapter für den Spinner

Spinner mySpinner = (Spinner) findViewById(R.id.mySpinner); 
final String[] data = getResources().getStringArray(
      R.array.data); 
final ArrayAdapter<String> adapter1 = new CustomizedSpinnerAdapter(
      AddSlaveActivity.this, android.R.layout.simple_spinner_item, 
      data); 
mySpinner.setAdapter(adapter1); 
+0

Danke. Sind ihre "gutaussehenden" Standardeinstellungen, die ich verwenden kann? – kapad

+1

können Sie alles von/platforms/android-13/data/res/drawable-hdpi aus dem Android-Ordner jst nehmen, um mit – user936414

+0

zu überprüfen Ich kann keine Ressourcen verwenden, da die Aktivität, die den Spinner anzeigt, in einem geschlossenen Quell-Jar in einem Android-Bibliotheksprojekt ist . Gibt es in der Klasse android.R irgendwelche Ansichten/Layouts, die ich verwenden kann? – kapad

Verwandte Themen