11

API 11以降を対象とする新しいプロジェクトを作成しました。デフォルトで SearchView を展開したいアクティビティがあります。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    inflater.inflate(R.menu.menu_search, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    mSearchView = (SearchView) searchItem.getActionView();
    mSearchView.setIconifiedByDefault(false);
}

これは機能しますが、アクションバーにアイコンやタイトルは必要ありません。検索ビューだけです。次のようにして、タイトルとアイコンを削除しようとしました。

getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setIcon(android.R.color.transparent);

しかし、私のアクションバーには、検索ビューの左側にまだこのパディングがあります:

ここに画像の説明を入力

それを取り除く方法はありますか?

ありがとう

- - - - 編集 - - - - - - - - - -

これが私の活動の全容です:

public class GreatAndroid extends FragmentActivity {
    private SearchView mSearchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getActionBar().setDisplayShowHomeEnabled(false);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        getMenuInflater().inflate(R.menu.menu_search, menu);
        MenuItem mi = menu.findItem(R.id.action_search);
        mSearchView = (SearchView) mi.getActionView();
        mSearchView.setIconifiedByDefault(false);

        return true;
    }
}

メニューxmlは次のとおりです。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@+id/action_search"
      android:title="@string/search"
      android:icon="@android:drawable/ic_menu_search"
      android:showAsAction="always"
      android:actionViewClass="android.widget.SearchView" />
</menu>
4

3 に答える 3

5

アイコンは透明ですが、スペースを占有します。

getActionBar().setIcon(android.R.color.transparent);

この行を削除して、次を追加します。

getActionBar().setDisplayShowHomeEnabled(false);

これで、使用可能なすべてのスペースを SearchView で占有する必要があります。

折りたたむことができるアクション アイテムには最大幅があります。私が考えることができる唯一の回避策は次のとおりです。

public class GreatAndroid extends FragmentActivity {
    private SearchView mSearchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getActionBar().setDisplayShowHomeEnabled(false);
        getActionBar().setDisplayShowTitleEnabled(false);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        getMenuInflater().inflate(R.menu.menu_search, menu);
        MenuItem mi = menu.findItem(R.id.action_search);
        mSearchView = (SearchView) mi.getActionView();
        mSearchView.setIconifiedByDefault(false);

        // You can use Display.getSize(Point) from API 13 onwards.
        // For API 11 and 12, use Display.getWidth()

        final Point p = new Point();

        getWindowManager().getDefaultDisplay().getSize(p);

        // Create LayoutParams with width set to screen's width
        LayoutParams params = new LayoutParams(p.x, LayoutParams.MATCH_PARENT);

        mSearchView.setLayoutParams(params);

        return true;
    }
}

左側にまだスペースがあるように見えますが、mSearchView.setBackgroundColor(Color.RED);実際にはないことがわかります。

于 2013-09-14T22:12:48.743 に答える
4

左のパディングについては、使用してみてくださいcollapseActionView

メニューの例を次に示します。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_search"
    android:icon="@android:drawable/ic_menu_search"
    android:title="@string/search_hint"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="ifRoom|collapseActionView" />
</menu>
于 2015-02-25T09:52:37.223 に答える
2

@Vikram の awnser を動作させることができませんでしたが、スタック オーバーフローから別の回答が見つかりました。

styles.xml ファイルを開き、Actionbar スタイルに以下のコードを追加します。

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <--this do the magic!

p/s: 私は Actionbar Sherlock を使用していますが、これは問題なく動作します

(アンドロイド作品のアクションバーからアイコン/ロゴを削除するを参照)

于 2014-03-05T16:29:11.353 に答える