Android-puis-je augmenter la taille de texte pour le widget NumberPicker?

nous avons un widget NumberPicker en 3.0, mais il semble que la taille de texte pour ce widget ne peut pas être modifiée. Est-ce que je rate quelque chose ou est-ce l'affaire? J'aimerais vraiment augmenter la taille de la police, elle est très petite avec la valeur par défaut. Mais je ne peux pas voir une propriété textSize pour ça.

24
demandé sur Willi Mentzel 2011-08-05 19:04:45

8 réponses

Nous avons rencontré le même problème et fini par recréer NumberPicker localement. Il y a un tutoriel plus détaillé ici.

3
répondu Ginger McMurray 2016-03-24 06:07:16

j'ai été capable d'accomplir ceci en prolongeant le numéro par défaut. Pas l'idéal, mais ça fonctionne.

public class NumberPicker extends android.widget.NumberPicker {

   public NumberPicker(Context context, AttributeSet attrs) {
     super(context, attrs);
   }

   @Override
   public void addView(View child) {
     super.addView(child);
     updateView(child);
   }

   @Override
   public void addView(View child, int index, android.view.ViewGroup.LayoutParams params) {
     super.addView(child, index, params);
     updateView(child);
   }

   @Override
   public void addView(View child, android.view.ViewGroup.LayoutParams params) {
     super.addView(child, params);
     updateView(child);
   }

   private void updateView(View view) {
     if(view instanceof EditText){
       ((EditText) view).setTextSize(25);
       ((EditText) view).setTextColor(Color.parseColor("#333333"));
     }
   }

 }

alors faites simplement référence à cette classe dans votre mise en page xml.

<com.yourpackage.NumberPicker
        android:id="@+id/number_picker"
        android:layout_width="43dp"
        android:layout_height="wrap_content" />
81
répondu aheuermann 2013-10-27 05:06:37

La suite travaillé pour moi (dans l'API 15 / 4.0.3)

remarque: la solution d'aheuermann est sûre contre les éventuelles différences de mise en oeuvre dans le sur différentes versions D'Android (c'est-à-dire le TextView peut ne pas toujours être à la position de l'enfant 1).

TextView tv1 = (TextView)_numberPicker.getChildAt(1);
tv1.TextSize = 10;
4
répondu samis 2014-07-31 13:26:36

je faisais face au même problème, je voulais augmenter la taille du texte du numéroteur mais je n'ai pas pu trouver un moyen de le faire dans le cadre du Widget. Toutes les réponses ci-dessus sont excellentes, mais je suis allé avec la solution suivante, qui a répondu à mes besoins:

<NumberPicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleX="1.5"
    android:scaleY="1.5"/>

cela grossit essentiellement le Widget entier.

3
répondu Shah 2016-06-24 22:30:08

sautant à L'API 23, la solution présentée par aheuermann semble avoir des problèmes. Dans la source de NumberPicker, la taille du texte est définie en fonction de L'enfant EditText lors de l'initialisation. Si vous essayez de le modifier plus tard, le champ EditText deviendra grand, mais tous les autres nombres tirés directement par le widget seront toujours petits.

la solution que je vais utiliser a l'inconvénient qu'elle doit être instanciée programmatiquement, au lieu de via layout, mais sinon, elle semble fonctionner comme destiné. Tout d'abord, ajoutez ce qui suit à vos styles.fichier xml:

<style name="NumberPickerText">
    <item name="android:textSize">40dp</item>
</style>

alors, vous pouvez instancier le NumberPicker avec

    ContextThemeWrapper cw = new ContextThemeWrapper(this, R.style.NumberPickerText);
    NumberPicker np = new NumberPicker(cw);

en présumant que cela se fait dans le cadre d'une activité. Si ce N'est pas le cas, remplacez le "Ceci" par n'importe quel contexte disponible. Ce code fait l'équivalent de définir un thème qui l'emporte sur toutes les tailles de TextView dans votre activité, mais il ne l'applique qu'au lecteur de nombre et à ses enfants.

3
répondu John Starbird 2016-09-27 20:19:36

Mettez seulement ce sytle pour votre NumberPicker:

   <style name="AppTheme.Picker" parent="Theme.AppCompat.Light.NoActionBar" >
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textSize">20dp</item>
</style>

<NumberPicker
        android:theme="@style/AppTheme.Picker"
        android:id="@+id/yearNumberPicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

et <item name="android:textColorPrimary">@android:color/white</item> changement textcolor : enter image description here

3
répondu ArMo 372 2017-02-28 06:39:08

il a trois vues-

2 ImageButttons et 1 EditText.

    if(numberPicker.getChildAt(1) instanceOf EditText)
    {
        EditText edt=(EditText)numberPicker.getChildAt(1);
        //do customizations here
    } 

mise en page complète de NumberPicker à partir du Code source Android

<?xml version="1.0" encoding="utf-8"?>
<!--
**
** Copyright 2008, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->

<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <ImageButton android:id="@+id/increment"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/numberpicker_up_btn"
        android:paddingTop="22dip"
        android:paddingBottom="22dip"
        android:contentDescription="@string/number_picker_increment_button" />

    <EditText
        android:id="@+id/numberpicker_input"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@style/TextAppearance.Large.Inverse.NumberPickerInputText"
        android:gravity="center"
        android:singleLine="true"
        android:background="@drawable/numberpicker_input" />

    <ImageButton android:id="@+id/decrement"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/numberpicker_down_btn"
        android:paddingTop="22dip"
        android:paddingBottom="22dip"
        android:contentDescription="@string/number_picker_decrement_button" />

</merge>
0
répondu Harish Gyanani 2016-08-17 07:03:27

pour votre information, Si vous utilisez aheuermann solution (comme je l'ai fait) et vous voulez aussi implémenter un écouteur pour le sélectionneur de nombres, la méthode onValueChanged devra ressembler à ceci. Je pensais que je voudrais partager ceci, puisqu'il m'a fallu un peu de temps pour celui-ci.

public void onValueChange(android.widget.NumberPicker picker, int oldVal, int newVal){
    //your awesome methods to perform on value changed
}
0
répondu seekingStillness 2017-09-24 12:15:43