SearchView в файле поддержки support.v7.appcompat: по умолчанию 9-патч-фон не отображается правильно

Я разрабатываю приложение с помощью ActionBar, используя библиотеку support.v7.appcompat. Панель действия работает, отображается SearchView, отображается подсказка. Единственная проблема заключается в том, что фон SearchView не искажается должным образом. Внутри обычного, он кажется большим и с черными линиями с 9 патчами.

Использование:

  • Разработка из командной строки с использованием ant debug для компиляции.
  • В Linux Mageia 3, ant версия: Apache Ant (TM) версия 1.8.4, составленная 11 января 2013 года
  • Ссылка на библиотеку с помощью строки project.properties:

android.library.reference.1 =../../../../../SDK/дополнения/Android/поддержка/v7/AppCompat/

  • Использование @style/Theme.AppCompat.Light
  • Протестировано в устройстве с CM10-1, в устройстве с запасом 4.1 и эмуляторе с API 8 (Android 2.2). Тот же результат во всех устройствах.

Снимок экрана:

enter image description here

Код:

DiccionariCatala.java(основная деятельность):

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(меню 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>

project.properties

target=android-16
android.library.reference.1=../../../../../sdk/extras/android/support/v7/appcompat/

Любая помощь мне очень понравилась. Я не могу найти ничего плохого, и там также странный факт, который презирает это, все остальное работает. Спасибо.

Ответ 1

Хорошо, я хочу убить себя. Я исправил это. Не знаю, как это сделать. Я не могу повторить ошибку снова!

что я думаю, исправил ошибку: я добавил import android.support.v7.app.ActionBar;

Затем я удалил его, чтобы воспроизвести ошибку, но не вернулся.

Я также удалил Build-tools 18.0.1 (который выделен курсивом и сделал меня подозрительным), поэтому я подумал, что это может быть источником ошибки. Но я переустановил его и не могу воспроизвести ошибку.

Я не знаю, что еще может быть. Во всяком случае, двигаясь дальше... (зрение)

Edit:

Это случилось снова, и на этот раз я смог сузить его. Оказывается, это ошибка Build Tools v18. *, Переход на v17 решает проблему.

Ответ 2

Обычно это проблема, когда файл ресурсов (R) не был правильно сгенерирован, а некоторые ссылки смещены.

Выполнение очистки обычно является хорошим исправлением, так как оно регенерирует этот файл. Это то, что вы случайно сделали при переустановке.

Ответ 3

У меня была такая же проблема с инструментами построения 19.0.1, но новая версия 19.0.3 устранила проблему. Попробуйте, надеюсь, это вам тоже поможет.