Android: ¿puedo aumentar el textSize para el widget NumberPicker?
Tenemos un widget NumberPicker en 3.0, pero parece que el textSize para este widget no puede ser modificado. ¿Estoy perdiendo algo o es este el caso? Realmente me gustaría aumentar el tamaño de la fuente, es bastante pequeño con el valor predeterminado. Pero no puedo ver una propiedad textSize para ello.
- Error de OutOfMemory aunque la memoria libre está disponible
- ¿Cómo puedo solucionar problemas de visibilidad de html.fromHtml link focus (en ICS y Honeycomb)?
- ¿Es solo yo ... o es Android Honeycomb 3.0 emulador realmente lento?
- ¿Se incluirá la nueva API de ActionBar en el backport Fragment?
- Emulador SDK de Android con resolución Full HD
- Android VOIP SipException: Error al crear SipSession
- ¿Qué es lo que hace Bitmap # recycle () en Android Honeycomb?
- Antialiasing de lienzo con aceleración de hardware (Android API 11 y posterior)
- TextView setScaleX () / setScaleY () y setTextIsSelectable (true) selección
- ¿Funcionarán las aplicaciones Android 2.2 en Tablets que se ejecutan en la versión 3.0 y superior
- Cómo obtener la resolución de pantalla en Android Honeycomb?
- Android Honeycomb CheckBox contra el fondo blanco no se puede ver
- Android Crea una acción personalizada SearchView Search
Nos encontramos con el mismo problema y terminamos recreando NumberPicker localmente. Hay un tutorial más en profundidad aquí .
Yo era capaz de lograr esto mediante la ampliación de la predeterminada NumberPicker. no es ideal, pero funciona.
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")); } } }
A continuación, solo haga referencia a esta clase en su layout xml.
<com.yourpackage.NumberPicker android:id="@+id/number_picker" android:layout_width="43dp" android:layout_height="wrap_content" />
Lo siguiente funcionó para mí (en API 15 / 4.0.3)
Nota: la solución de aheuermann es segura contra posibles diferencias de implementación en el NumberPicker
de NumberPicker
través de diferentes versiones de Android (es decir, el TextView
puede no estar siempre en la posición de niño 1).
TextView tv1 = (TextView)_numberPicker.getChildAt(1); tv1.TextSize = 10;
Yo estaba enfrentando el mismo problema, quería aumentar el tamaño del texto del NumberPicker pero no podía encontrar una manera de hacerlo como parte del Widget. Todas las respuestas anteriores son grandes, pero en su lugar me fui con la siguiente solución, que cumplió con mis necesidades:
<NumberPicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleX="1.5" android:scaleY="1.5"/>
Esto amplía esencialmente todo el Widget.
Saltando a API 23, la solución presentada por aheuermann parece tener problemas. En el origen de NumberPicker, el tamaño de texto se establece basado en el niño EditText en la inicialización. Si intenta cambiarlo más tarde, el campo EditarTexto será grande, pero todos los demás números dibujados directamente por el widget seguirán siendo pequeños.
La solución que voy con tiene la desventaja de que debe ser instanciada mediante programación, en lugar de a través de diseño, pero de lo contrario, parece funcionar como se pretende. Primero, agregue lo siguiente a su archivo styles.xml:
<style name="NumberPickerText"> <item name="android:textSize">40dp</item> </style>
A continuación, puede instanciar el NumberPicker con
ContextThemeWrapper cw = new ContextThemeWrapper(this, R.style.NumberPickerText); NumberPicker np = new NumberPicker(cw);
Suponiendo que se está realizando dentro de una Actividad. Si no es así, reemplace el "este" con cualquier Contexto que tenga disponible. Este código equivale a establecer un tema que reemplaza todos los tamaños TextView dentro de su actividad, pero sólo se aplica a NumberPicker ya sus hijos.
Sólo establece este sytle para su 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" />
Y <item name="android:textColorPrimary">@android:color/white</item>
cambiar textcolor:
Podemos personalizar vistas dentro de NumberPicker.
Tiene tres vistas:
2 ImageButttons y 1 EditText.
if(numberPicker.getChildAt(1) instanceOf EditText) { EditText edt=(EditText)numberPicker.getChildAt(1); //do customizations here }
Diseño completo de NumberPicker desde el código fuente de 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>
- "… debe proporcionar un layout_height …" pero es en mis recursos de estilo?
- Android: inicia la navegación de Google desde una aplicación