簡體   English   中英

使用擴展的SearchView刪除操作欄的圖標/標題?

[英]Remove icon/title for actionbar with expanded SearchView?

我創建了一個新項目,目標是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>

即使圖標是透明的,它仍占用空間:

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); 看到確實沒有。

關於左邊填充,你可以嘗試使用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>

我無法得到@Vikram的工作,但我發現Stack Overflow的另一個答案:

打開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,這很好用

(請參閱Android工作欄上的刪除行動欄中的圖標/徽標

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM