gpt4 book ai didi

android - 折叠后 SearchView 从工具栏中消失

转载 作者:行者123 更新时间:2023-12-05 00:17:14 25 4
gpt4 key购买 nike

我创建了一个小例子来展示我的问题。工具栏中带有 SearchView 和 3 个按钮的主要布局:1)设置文本——展开搜索 View 并设置查询2) Expand——展开搜索 View 3) Collapse——折叠搜索 View

activity_main.xml
android:fitsSystemWindows="true">

    <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"
tools:context="com.porn.MainActivity">

<android.support.design.widget.AppBarLayout
android:layout_width="368dp"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="0dp">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:contentInsetStartWithNavigation="0dp">

</android.support.v7.widget.Toolbar>

</android.support.design.widget.AppBarLayout>

<Button
android:id="@+id/setTextBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set text" />

<Button
android:id="@+id/expandBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Expand" />

<Button
android:id="@+id/collapseBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Collapse" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {
private MenuItem toolbarSearchMenuItem;
private SearchView toolbarSearchView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//Toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
findViewById(R.id.expandBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toolbarSearchMenuItem.expandActionView();
}
});


findViewById(R.id.collapseBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toolbarSearchMenuItem.collapseActionView();
}
});

findViewById(R.id.setTextBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setToolbarSearchQuery("Text2");
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toobar, menu);
toolbarSearchMenuItem = menu.findItem(R.id.toolbar_action_search);
toolbarSearchView = (SearchView) menu.findItem(R.id.toolbar_action_search).getActionView();
init();
return true;
}

public void init() {
//In real app i get searchQuery from extra
//String searchQuery = getIntent().getStringExtra(INTENT_EXTRA_SEARCH_QUERY_KEY);
setToolbarSearchQuery("Text from intent");
}

private void setToolbarSearchQuery(String searchQuery) {
if (!searchQuery.equals("")) {
toolbarSearchMenuItem.expandActionView();
toolbarSearchView.setQuery(searchQuery, false);
toolbarSearchView.clearFocus();
} else {
toolbarSearchMenuItem.collapseActionView();
}
}

}

当我从 onCreateOptionsMenu 调用方法 init() 时出现我的问题(在实际应用程序中,我使用 intent extra 中的文本初始化 SearchView)。如果我从 init 调用 setToolbarSearchQuery 方法,然后单击折叠按钮 SearchView 折叠并且搜索图标消失。

但是,如果我不调用 init 方法,而是调用带有设置文本按钮的相同方法 setToolbarSearchQuery,它会正常工作(SearchView 已折叠,搜索图标显示在工具栏中)。

我该如何解决这个问题?为什么图标在折叠后消失?

我知道当我从 onCreateOptionsMenu 展开 SearchView 时会发生这种情况。但是我如何从 intent extra 中更正 init SearchView?

崩溃后的截图 enter image description here

崩溃后的截图 enter image description here

最佳答案

“anton111111”答案非常有效,但对于那些不想使用延迟的人,我建议更改搜索菜单项的 showAsAction 属性,如下所示:

android:showAsAction="always|collapseActionView"

代替

android:showAsAction="ifRoom|collapseActionView"

查看原始答案 here .

关于android - 折叠后 SearchView 从工具栏中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42106738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com