我正在尝试使用EditText实现工具栏作为搜索框。这是我想要实现的目标:
到目前为止一切看起来还不错,但EditText表现得很奇怪。当我点击它时,它会按预期获得焦点,但是当我在EditText之外的任何地方点击时,没有任何事情发生,因此软键盘都不会隐藏,EditText也不会失去焦点。 这是搜索框视图的代码:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
cardview:cardBackgroundColor="#FFFFFF"
cardview:cardCornerRadius="2dp"
cardview:cardElevation="4dp"
cardview:cardUseCompatPadding="true"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
>
<ImageView
android:id="@+id/search_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_search_black_24dp"
android:tint="#7d7d7d"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:layout_toLeftOf="@+id/speech"
android:layout_toRightOf="@+id/search_icon"
android:background="@android:color/transparent"
android:hint="Search for a store"
android:imeOptions="actionSearch"
android:inputType="text"
android:textColor="#494949"
android:textColorHint="#a9a9a9"
android:textSize="16sp"
/>
<ImageView
android:id="@+id/speech"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="10dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_mic_black_24dp"
android:tint="#7d7d7d"
/>
</RelativeLayout>
</android.support.v7.widget.CardView>
以下是工具栏中的用法:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
foreground="?android:windowContentOverlay"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
app:theme="@style/Toolbar"
app:titleTextAppearance="@style/ToolbarTitle"
foreground="?android:windowContentOverlay"
>
<include layout="@layout/search_box"/>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/activityContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/cameraButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_camera_white_24dp"
app:backgroundTint="@color/primaryGreen"
app:fabSize="normal"
app:pressedTranslationZ="12dp"
/>
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/navigation_drawer_header"
app:itemBackground="@drawable/drawer_item_bg"
app:itemIconTint="@color/drawer_item"
app:itemTextColor="@color/drawer_item"
app:menu="@menu/navigation_menu"
app:theme="@style/NavigationDrawer"
/>
</android.support.v4.widget.DrawerLayout>
也许我错过了一些显而易见的事情,但我花了3个小时才想弄清楚,没有任何运气...... 有没有人有类似的问题?任何帮助或指示将不胜感激。