因此,开始研究如何创建一个带有自动填充文本视图的操作栏进行搜索。我发现的大部分解决方案都接近于我所寻找的解决方案,但是他们似乎都专注于在一行上添加到操作栏中的任何和其他视图。
进一步复杂化的是,这一切都位于视图寻呼机片段中,其父活动已经有一个操作栏。因此,使用带有工具栏的setSupportingActionBar调用会引发非法状态异常。
不确定我所支持的内容是否真的得到了支持,但现在就可以了。
我正在寻找的最终结果是
这是我写的
*包含名为autocomplete.xml *
的自动填充文本视图的自定义视图<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/search_text_view"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:drawableLeft="@drawable/ic_search_blue"
android:background="@drawable/white_edittext"/>
</LinearLayout>
这是我片段中用于设置操作栏的代码
private void initializeActionsBarWithAutocomplete(){
ActionBar actionBar = ((MyParentActivity) getActivity()).getSupportActionBar();
actionBar.setTitle(getResources().getString(R.string.default_title));
View autoCompleteView = LayoutInflater.from(getContext()).inflate(R.layout.autocomplete, null);
mSearchTextView = (AutoCompleteTextView) autoCompleteView.findViewById(R.id.search_text_view);
mSearchTextView.setAdapter(mTypeAheadAdapter);
mSearchTextView.setOnItemClickListener(this);
mSearchTextView.addTextChangedListener(this);
actionBar.setCustomView(autoCompleteView);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
我最终得到的是
因此,假设我尝试做的事情是可能的,而且我至少在正确的轨道上,这究竟是什么问题。我假设让自定义视图匹配父级会强制textview占用自己的行并相应地扩展操作栏的大小。显然情况并非如此。我查看了一些允许您明确设置操作栏高度的文章,但从我能理解的内容来看,该方法会在操作栏中的视图下显示相同的外观。
答案 0 :(得分:1)
您可以在XML中使用Toolbar
小部件,并根据您的需要对其进行自定义。
以下是包含Toolbar
的{{1}}布局:
AutoCompleteTextView
在<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:titleTextColor="#FFFFFF">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="20dp">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:text="@string/app_name"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold" />
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_margin="8dp"
android:layout_centerInParent="true"
cardview:cardBackgroundColor="#ffffff"
cardview:cardCornerRadius="2dp"
cardview:cardElevation="0dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true">
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/search_text_view"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:drawableLeft="@drawable/ic_search_blue"
android:background="@drawable/white_edittext"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
代码中试试这个:
JAVA
<强>输出:强>
希望这会有所帮助〜