SearchView sur le support.v7.appcompat bibliothèque problème: par défaut 9-patch arrière-plan rend pas correctement
Je suis le développement d'une application avec ActionBar utilisation d'un support.v7.appcompat de la bibliothèque. La barre d'action fonctionne, le SearchView est indiqué, l'indice montre. Le seul problème est que le fond de la SearchView n'est pas scalling correctement. L'Insead de l'habitude, il semble grand et avec le 9-patch lignes noires.
À l'aide de:
- De développer, à partir de la ligne de commande, à l'aide de
ant debug
à compiler. - Sur Linux Mageia 3, ant version: Apache Ant(TM) version 1.8.4 compilé, le 11 janvier 2013
- Reliant à la bibliothèque de projet.propriétés de la ligne:
android.de la bibliothèque.référence.1=../../../../../sdk/extras/android/support/v7/appcompat/
- À l'aide de @style/Thème.AppCompat.La lumière
- Testé dans l'appareil avec CM10-1, dans le dispositif avec un stock 4.1, et l'émulateur avec l'API 8 (Android 2.2). Même résultat dans tous les appareils.
Capture d'écran:
Code:
DiccionariCatala.java (activité principale):
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 (menu 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>
projet.propriétés
target=android-16
android.library.reference.1=../../../../../sdk/extras/android/support/v7/appcompat/
Toute aide me serait beaucoup aprécié. Je ne peux pas trouver quelque chose de mal, et il y a aussi l'étrange fait que despide cela, tout le reste du travail. Merci.
OriginalL'auteur ArnauOrriols | 2013-08-17
Vous devez vous connecter pour publier un commentaire.
Ok, je veux me tuer. J'ai corrigé. Ne sais pas comment. Je ne peux pas reproduire le bug de nouveau!
ce que je pense a corrigé le bug: j'ai ajouté import android.de soutien.v7.app.ActionBar;
Puis je l'ai retiré de reproduire le bug, mais ce n'est pas de retour.
J'ai également fait de désinstaller Construire des outils 18.0.1 (qui est en italique et m'a fait suspect), j'ai donc pensé qu'il pourrait être la source du bug. Mais je l'ai réinstallé, et ne peut pas reproduire le bug.
Je ne sais pas quoi d'autre pourrait éventuellement être. De toute façon, se déplaçant sur... (à vue)
Edit:
C'est arrivé à nouveau, et cette fois j'ai été en mesure de le réduire. Il s'avère que c'est un bug de Construire des Outils v18.*, la rétrogradation à la v17 résout le problème.
Devinez quoi, qui m'est arrivé avec 23.0.3. La rétrogradation à la 23.0.2 résolu le problème. Grâce au point de la direction, j'ai cherché pendant des heures une solution jusqu'à ce que j'ai vu ce.
OriginalL'auteur
C'est généralement un problème où les ressources (R) fichier n'a pas été correctement généré et certaines références ne sont pas alignés.
Faire un nettoyage est généralement une bonne correction, comme il régénère ce fichier. C'est ce que vous, par inadvertance, fait lors de la réinstallation.
Ne peux pas dire pour sûr, je viens d'assumer son typique de l'éclipse 🙂 Le cas où, en général, je le vois, c'est quand j'ai des " Construire Automatiquement sélectionnée et de faire des modifications rapides à mes ressources.
Il s'avère que c'est arrivé à nouveau, et cette fois j'ai été en mesure de cerner le problème. C'est un bug de Construire des Outils V18.*. La rétrogradation à la V17 elle n'en résout.
OriginalL'auteur
J'ai eu le même problème avec les outils de construction de 19.0.1, mais version plus récente 19.0.3 résolu le problème. L'essayer, j'espère qu'il va vous aider aussi.
OriginalL'auteur