Método alternativo a TextView.getMaxLines () para Android 4.0.3 (API 15) y inferior
Estoy recibiendo por debajo de los registros de choque mientras se utiliza método getMaxLines()
de Texview en Ice Cream Sandwich Android versión 4.0.3,
Así que tengo el problema real es, que mi aplicación está ejecutando sdk inferior que no tiene este método getMaxLines ().
- Cómo tratar las clases obsoletas en Android para mantener la compatibilidad
- Inflar ActionBarSherlock Menú definido en XML
- Android Lollipop - comportamiento cambiado de SQLite
- ¿Por qué el teclado no se mostrará en Fragmento con WebView?
- Android: menuItem.expandActionView () en el nivel API <14
Cómo puede eliminar este bloqueo. No encontré ningún método alternativo
java.lang.NoSuchMethodError: android.widget.TextView.getMaxLines at com.text.mobile.new.adapters.ServiceListAdapter.onBindViewHolder(ServiceListAdapter.java:232) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5277) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5310) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4568) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4461) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1962) at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:438) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1334) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:563) at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2847) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3145) at android.view.View.layout(View.java:11278) at android.view.ViewGroup.layout(ViewGroup.java:4224) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:925) at android.view.View.layout(View.java:11278) at android.view.ViewGroup.layout(ViewGroup.java:4224) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:925) at android.view.View.layout(View.java:11278) at android.view.ViewGroup.layout(ViewGroup.java:4224) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486) at android.widget.LinearLayout.onLayout(LinearLayout.java:1399) at android.view.View.layout(View.java:11278) at android.view.ViewGroup.layout(ViewGroup.java:4224) at android.widget.FrameLayout.onLayout(FrameLayout.java:431) at android.view.View.layout(View.java:11278) at android.view.ViewGroup.layout(ViewGroup.java:4224) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486) at android.widget.LinearLayout.onLayout(LinearLayout.java:1399) at android.view.View.layout(View.java:11278) at android.view.ViewGroup.layout(ViewGroup.java:4224) at android.widget.FrameLayout.onLayout(FrameLayout.java:431) at android.view.View.layout(View.java:11278) at android.view.ViewGroup.layout(ViewGroup.java:4224) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method)
- ¿Cómo puedo usar el mismo conjunto de pantallas de preferencias para todas las versiones de Android de 2.X a 4.X?
- Estrategias para Honeycomb y compatibilidad con versiones anteriores
- Android: Solución para support.v4.app.Fragment -> Fragment classcastexception?
- Sustitución de fragmentos y cambio de orientación
- ¿Honeycomb SDK rompió la compatibilidad con versiones anteriores de GridView?
- ¿Qué es la compatibilidad hacia atrás en Android Studio?
- BackupAgent compatible con versiones anteriores
- ¿Cómo hacer que la función de notificación de respuesta directa de Android funcione en dispositivos pre-Android N?
El getMaxLines () de TextViewCompat
parece a la solución apropiada para esto.
También puede echar un vistazo en el SourceCode de TextViewCompat y copiar las funciones que necesita.
Código:
int maxLines = TextViewCompat.getMaxLines(yourtextView);
en lugar de:
int maxLines = yourtextView.getMaxLines();
Recomiendo usar el soporte lib y TextViewCompat. Pero sólo para completar, aquí también es la fuente (actual) de TextViewCompatDonut 's getMaxLines
:
static int getMaxLines(TextView textView) { if (!sMaxModeFieldFetched) { sMaxModeField = retrieveField("mMaxMode"); sMaxModeFieldFetched = true; } if (sMaxModeField != null && retrieveIntFromField(sMaxModeField, textView) == LINES) { // If the max mode is using lines, we can grab the maximum value if (!sMaximumFieldFetched) { sMaximumField = retrieveField("mMaximum"); sMaximumFieldFetched = true; } if (sMaximumField != null) { return retrieveIntFromField(sMaximumField, textView); } } return -1; }
Prueba esto, puede ayudar,
TextView t1 = (TextView) findViewById(R.id.txt1); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { int no= t1.getMaxLines(); Log.e("No of Lines: ", String.valueOf(no)); }
- Android: buenas prácticas para organizar dirs y archivos en almacenamiento Tarjeta SD?
- Eclipse no reconocerá la revisión de la biblioteca de soporte de Android 9