SearchView on support.v7.appcompat problema de la biblioteca: el fondo de 9 parches predeterminado no se procesa correctamente
Estoy desarrollando una aplicación con ActionBar utilizando la biblioteca support.v7.appcompat. La barra de acción funciona, se muestra el SearchView, se muestra la pista. El único problema es que el fondo del SearchView no se está estropeando correctamente. Insead de lo habitual, parece grande y con las 9 líneas parche negro.
Utilizando:
- Desarrollando desde la línea de comandos, usando
ant debug
para compilar. - En Linux Mageia 3, ant versión: Apache Ant (TM) versión 1.8.4 compilado el 11 de enero de 2013
- Enlace a la biblioteca con la línea project.properties:
Android.library.reference.1 = .. / .. / .. / .. / .. / sdk / extras / android / support / v7 / appcompat /
- No se encontró identificador de recurso para el atributo 'layoutManager' en el paquete 'android.support.design'
- setfitsystemwindows no funciona windowtranslucentstatus coordinatorlayout
- Cambiar altura de pagerTabStrip tabIndicator
- PreferenceFragmentCompat requiere la preferenciaTheme ser fijado
- La vista personalizada de Android ActionBar no rellena el padre
- Uso de @ style / Theme.AppCompat.Light
- Probado en el dispositivo con CM10-1, en el dispositivo con stock 4.1, y el emulador con API 8 (Android 2.2). El mismo resultado en todos los dispositivos.
Captura de pantalla:
Código:
DiccionariCatala.java (actividad principal):
import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView; import android.support.v4.view.MenuItemCompat; import android.app.Activity; import android.app.SearchManager; import android.content.Context; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.MenuInflater; public class DiccionariCatala extends ActionBarActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_actions, menu); SearchManager SManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); MenuItem searchMenuItem = menu.findItem(R.id.action_search); SearchView searchViewAction = (SearchView) MenuItemCompat.getActionView(searchMenuItem); searchViewAction.setSearchableInfo(SManager.getSearchableInfo(getComponentName())); searchViewAction.setIconifiedByDefault(false); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case R.id.action_search: //openSearch(); return true; default: return super.onOptionsItemSelected(item); } } }
Menu_actions.xml (menú xml)
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:diccionaricatala="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/action_search" android:title="@string/action_search_title" diccionaricatala:showAsAction="ifRoom" diccionaricatala:actionViewClass="android.support.v7.widget.SearchView" /> </menu>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mypackage.apps" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:theme="@style/Theme.AppCompat.Light"> <activity android:name="DiccionariCatala" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> </activity> </application> </manifest>
Proyecto.properties
target=android-16 android.library.reference.1=../../../../../sdk/extras/android/support/v7/appcompat/
Cualquier ayuda me gustaría mucho apreciated. No puedo encontrar nada malo, y también hay el hecho extraño que despide esto, todo lo demás funciona. Gracias.
- Android.app Fragments vs. android.support.v4.app usando ViewPager?
- Uso de NavigationView desde Android Design Support Library
- Android studio error Después de ejecutar el proyecto
- NavigationView: ¿cómo insertar divisor sin subgrupo?
- NullPointerException con ProgressBar usando ActionBarCompat
- Error de la biblioteca de soporte técnico de Android 23.2.0 al establecer style = "@ style / Widget.AppCompat.Button.Colored"
- Diálogo de soporte personalizado El texto del fragmento es el color incorrecto
- No se puede resolver el símbolo al cambiar la versión de la biblioteca de soporte
Ok, quiero matarme. Lo he arreglado. No sé cómo. No puedo reproducir el error de nuevo!
Lo que creo que ha arreglado el error: He añadido la importación android.support.v7.app.ActionBar;
Entonces lo he quitado para reproducir el fallo, pero no está detrás.
También desinstalé Build-tools 18.0.1 (que está en cursiva y me hizo sospechar), así que pensé que podría ser la fuente del error. Pero lo he reinstalado, y tampoco puedo reproducir el error.
No sé qué más podría ser. De todos modos, avanzando … (vista)
Editar:
Sucedió de nuevo, y esta vez he podido reducirlo. Resulta que es un error de Build Tools v18. *, La degradación a v17 resuelve el problema.
Esto suele ser un problema donde el archivo de recursos (R) no se ha generado correctamente y algunas referencias están desalineadas.
Hacer una limpieza suele ser una buena solución, ya que regenera este archivo. Esto es lo que hizo inadvertidamente al reinstalar.
Tuve el mismo problema con las herramientas de compilación 19.0.1, pero la nueva versión 19.0.3 arregló el problema. Pruébalo, espero que te ayude también.
- Lista de código nativo soportado de teléfonos Android
- Disposiciones de Android y redimensionamiento automático de imágenes