我想创建一个EditText来输入文本供用户搜索。此搜索应位于操作栏的顶部。我想在Google Play商店中显示搜索视图。我添加了下面的代码,它不能正确显示。你能帮我吗?
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay"
app:elevation="2dp">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/search_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:theme="@style/ThemeOverlay.MaterialComponents.Light">
<EditText
android:id="@+id/search_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:background="@drawable/edittext_rounded"
android:fitsSystemWindows="true"
android:hint="Search for news"
android:imeOptions="actionDone"
android:inputType="text"
android:singleLine="true"
android:textColor="@android:color/black"
android:textCursorDrawable="@android:color/black"
android:textSize="18sp" />
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout>
我强烈建议您迁移到AndroidX,以便可以使用一些很棒的库,例如CoordinatoryLayout。
但是在这种情况下,您可以在XML布局中直接使用SearchView小部件。
<android.support.v7.widget.SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:queryBackground="@android:color/transparent"
app:queryHint="Google"
app:iconifiedByDefault="false"/>
并且在您的活动中添加此文本。
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextSubmit(String query){
// sample
textView.setText(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText){
return false;
}
});
最后,在您的MaterialToolbar
身高将android:layout_height="wrap_content"
更改为android:layout_height="?attr/actionBarSize"