2010-07-25 4 views
5

Comment réduire la taille de la police de mon spinner? J'ai réduit la taille du spinner à 35 pixels, ce qui réduit mon texte de moitié.Taille du texte d'un Spinner

Comment faire cela? Aussi, je ne veux pas que quelque chose soit sélectionné à l'avance.

Le texte par défaut doit être "select some value".

+0

Je ne connais pas grand chose à propos de spinner mais si je me souviens bien, il utilise un ArrayAdapter pour afficher les éléments. Je suppose alors que vous pourriez sous-classer, et remplacer getView? C'est juste une idée, je ne l'ai pas testé. Je vais y aller. – Sephy

Répondre

22

Après quelques tests, il existe un moyen plus simple que de sous-classer ArrayAdapter. Changer le

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array,android.R.layout.simple_spinner_item);//this is from the tutorial, adapt with your line 

à cette ligne:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.textview); 

il vous suffit de changer la conception du TextView vous utilisez du Tisseur. Je viens d'essayer avec cela, comme la mise en page du textview.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:text="@+id/TextView01" android:id="@+id/TextView01" 
android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp"></TextView> 
10

Changer

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array,android.R.layout.simple_spinner_item); 

à ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.textview);

changera seul l'élément qui est visible par défaut sur la fileuse. Si nous avons besoin du même style à appliquer sur tous les éléments de la fileuse, nous devons changer

adapter.setDropDownViewResource(android.R.layout.simple_spinner_item) to 


adapter.setDropDownViewResource(R.layout.textview); 
4

définissent 2 xml: R.layout.spinner_item, R.layout.spinner_dropdown_item

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.spinner_item); 
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 

spinner_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="?android:attr/spinnerItemStyle" 
    android:singleLine="true" 
    android:ellipsize="marquee" 
    android:textSize="18sp" > 
</TextView> 

spinner_dropdown_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:ellipsize="marquee" 
    android:textSize="18sp" /> 

-------------------------------- Mise à jour --------------- -----------------------

le code reste:

final ActionBar actionBar = getActivity().getActionBar(); 
RelativeLayout relative = new RelativeLayout(getActivity()); 
Spinner spinner = new Spinner(getActivity()); 
spinner.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); 

relative.addView(spinner); 
actionBar.setDisplayShowCustomEnabled(true); 
actionBar.setCustomView(relative); 

// Set adapter and listener 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.spinner_item); 
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 
+1

Une fois ces 2 fichiers XML définis, comment sont-ils incorporés dans le reste du code? – Rich

0

Réglage android:scaleX et anrdoid:scaleY semble être un moyen facile de changer la taille de la police spinner.

Questions connexes