11

support.v7.appcompat ライブラリを使用して ActionBar でアプリを開発しています。アクションバーが機能し、SearchView が表示され、ヒントが表示されます。唯一の問題は、SearchView の背景が適切にスケーリングされていないことです。いつもとは違い、大きく見え、9パッチの黒い線が入っています。

使用:

  • コマンド ラインから開発しant debug、コンパイルに使用します。
  • Linux Mageia 3、ant バージョン: 2013 年 1 月 11 日にコンパイルされた Apache Ant(TM) バージョン 1.8.4
  • project.properties 行でライブラリにリンク:

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

  • @style/Theme.AppCompat.Light の使用
  • CM10-1 搭載デバイス、ストック 4.1 搭載デバイス、および API 8 (Android 2.2) 搭載エミュレータでテスト済み。すべてのデバイスで同じ結果。

スクリーンショット:

ここに画像の説明を入力

コード:

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>

プロジェクトのプロパティ

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

どんな助けでも私は大いに感謝します。私は何も悪いことを見つけることができません。また、これを軽視するという奇妙な事実もあります。他のすべては機能します。ありがとう。

4

3 に答える 3

8

よし、自殺したい。私はそれを修正しました。方法がわからない。バグを再現できません!

バグが修正されたと思います: import android.support.v7.app.ActionBar; を追加しました。

その後、バグを再現するために削除しましたが、戻ってきません。

Build-tools 18.0.1 もアンインストールしました (イタリック体で表示されているため、疑わしいと感じました)。これがバグの原因である可能性があると考えました。しかし、再インストールしましたが、バグも再現できません。

他に何ができるかわかりません。とにかく、先に進みます... (光景)

編集:

それは再び起こり、今回はそれを絞り込むことができました。Build Tools v18.* のバグであることがわかりました。v17 にダウングレードすると問題が解決します。

于 2013-08-17T12:58:41.410 に答える
3

これは通常、リソース (R) ファイルが正しく生成されておらず、一部の参照がずれている場合に発生する問題です。

このファイルを再生成するため、クリーンアップを行うと通常は適切な修正になります。これは、再インストール時に誤って行ったことです。

于 2013-08-27T12:43:18.147 に答える