gpt4 book ai didi

android - 在工具栏( fragment )中添加 searchView 时出现布局问题

转载 作者:搜寻专家 更新时间:2023-11-01 09:46:03 24 4
gpt4 key购买 nike

在我的 fragment 中,我添加了一个工具栏,现在我试图在此处添加一个 searchView,它可以展开和折叠它在操作栏上的正常工作,但是在我的工具栏上使用它时出现布局问题:

这是我的工具栏,下面有两个按钮我的问题 #1 是这里我的 searchView 图标不可见,但是当你触摸时钟下方(状态栏中的 5:16)时,searchView 展开查看第二张图片

enter image description here

你可以看到现在 searchView 是可见的并且工具栏的标题(它的 TextView )向左移动以便为 searchView 腾出空间这也是一个问题并且当我在搜索 View 上键入任何内容时文本的颜色不可见(但 searchView 工作正常)只有搜索到的文本在 searchView 中不可见

enter image description here

当我在时钟下方再次点击时,我的 searchView 崩溃并且标题也设置在正确的位置

这是我的 fragment 的 xml 文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">



<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:id="@+id/toolbar"
android:theme="@style/ToolBarStyle"
android:elevation="5dp"
android:textAlignment="center"
android:background="@android:color/holo_red_light">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Channel"
android:layout_gravity="center"
android:id="@+id/toolbar_title"
android:textSize="20sp"
android:textStyle="bold"
android:background="#00000000"
android:textColor="#ffffff" />
</android.support.v7.widget.Toolbar>


<RelativeLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar">

.... other ui elements
</RelativeLayout>
</RelativeLayout>

searchView 菜单 xml 文件:

<?xml version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/done"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search"/>

此 fragment 在 tabLayout 内,我不能使用 Actionbar 而不是工具栏知道我该如何解决这个问题吗?或者为什么会这样?请让我知道这对我很有帮助

在我的 fragment 类中:

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.menu_action_next){
//Do whatever you want to do

return true;
}

return super.onOptionsItemSelected(item);
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
final MenuItem searchItem = menu.findItem(R.id.action_search);

}

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

MenuInflater menuInflater = inflater;
menuInflater.inflate(R.menu.search_bar_menu, menu);

MenuItem searchItem = menu.findItem(R.id.action_search);
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);

android.support.v7.widget.SearchView searchView = null;
if (searchItem != null) {
searchView = (android.support.v7.widget.SearchView) searchItem.getActionView();
}
if (searchView != null) {
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
}

if (searchView != null )
{

searchView.setOnClickListener(onClickListener);
searchView.setOnQueryTextListener(onQueryTextListener);
searchView.setOnCloseListener(onCloseListener);


}
}

更新:

在我的搜索菜单 xml 中添加 app:showAsAction="ifRoom|collapseActionView" 之后(感谢@Ashwinikutre)我得到了这个

现在图标可见

enter image description here

并通过删除很好但没有文本颜色和关闭按钮(现在在另一侧但不可见)的标题进行扩展

enter image description here

最佳答案

尝试显式添加以下属性以表明它是一个搜索 View

<?xml version="1.0" encoding="utf-8"?>
<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="@drawable/search"
android:orderInCategory="100"
android:title="@string/search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always"/>

当然,你可能也有这个正确的设置

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.global_search, menu);

final MenuItem item = menu.findItem(R.id.action_search);

MenuItemCompat.expandActionView(item);

final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);

searchView.setQueryHint(getString(R.string.search_customers));

searchView.setOnQueryTextListener(this);

return true;
}

如果有帮助请告诉我!

关于android - 在工具栏( fragment )中添加 searchView 时出现布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38053649/

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