2012-10-26 8 views
8

Próbuję programowo utworzyć Spinner przy użyciu ArrayAdapter. Robi się to w zamkniętym słoju źródłowym w ramach projektu biblioteki Androida i nie mam żadnego dostępu do zasobów.Programowanie programatora i adaptera Android programowalnie

Chcę wiedzieć, jak dostosować układ i widok tekstu, który wyświetla pokrętło.

--EDIT--
Obecnie używam następujący kod

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

spinner.setAdapter(spinnerData); 

Co się dzieje jest to, że nie mogę kontrolować wielkość czcionek, kolorów czy cokolwiek innego. Kiedy klikam na pokrętło, aby wybrać coś, wszystkie opcje są w naprawdę małym tekście. Chcę móc zmienić sposób renderowania na ekranie.

+1

to proszę być bardziej jasne .. ??? –

Odpowiedz

14

Wystarczy utworzyć niestandardową ArrayAdapter i określić, w jaki sposób TextView spinner powinien wyglądać w ten sposób getDropDownView adaptera

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

i ustawić ten adapter do turbinki

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

Dzięki. Czy są jakieś "ładne" wartości domyślne, z których mogę korzystać? – kapad

+1

możesz wziąć cokolwiek z/platforms/android-13/data/res/drawable-hdpi z folderu jst na androida, aby sprawdzić z – user936414

+0

Nie mogę korzystać z zasobów, ponieważ aktywność wyświetlająca spinner jest w słoiku z zamkniętym źródłem w projekcie biblioteki Androida . Czy są jakieś widoki/układy w klasie android.R, której mogę użyć. – kapad

Powiązane problemy