Я создаю приложение и перестраиваю элемент управления в Xamarin.Android. Управление работает, как и ожидалось, но я заметил, что если я выберу android:layout_height="wrap_content"
, высота исчезнет:
Но если я выберу android:layout_height="match_parent"
, он будет работать как положено:
Вы можете спросить, тогда почему бы вам не использовать match_parent
, и причина в том, что этот элемент управления является панелью поиска и частью блоков, которая работает в обычном режиме:
Поскольку все кнопки, которые вы видели, стали недоступными, потому что панель поиска полностью перешла во владение видом, и при нажатии я не вижу только вариантов:
Код CardView
или того раздела кода следующий:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:ignore="ContentDescription"
xmlns:tools="http://schemas.android.com/tools">
<android.support.v7.widget.CardView
android:id="@+id/mt_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
app:cardBackgroundColor="@color/searchBarPrimaryColor"
app:cardCornerRadius="2dp"
app:cardElevation="2dp"
app:cardPreventCornerOverlap="false">
<RelativeLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/mt_menu"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:padding="12dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_dots_vertical_black_48dp"
android:visibility="gone"
android:focusable="true" />
<ImageView
android:id="@+id/mt_nav"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:scaleType="center"
android:visibility="visible"
app:srcCompat="@drawable/ic_menu_black_24dp"
android:focusable="true" />
<TextView
android:id="@+id/mt_placeholder"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginLeft="16dp"
android:layout_toLeftOf="@+id/mt_search"
android:layout_toRightOf="@+id/mt_nav"
android:fontFamily="sans-serif"
android:gravity="center_vertical"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/searchBarPlaceholderColor"
android:textStyle="bold"
android:visibility="visible"
tools:text="PlaceHolder"
android:layout_marginStart="16dp"
android:layout_toStartOf="@+id/mt_search"
android:layout_toEndOf="@+id/mt_nav" />
<LinearLayout
android:id="@+id/inputContainer"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_toStartOf="@+id/mt_menu"
android:layout_toLeftOf="@+id/mt_menu"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="gone">
<ImageView
android:id="@+id/mt_arrow"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:padding="12dp"
android:src="@drawable/ic_arrow_left_black_48dp"
android:visibility="visible"
android:focusable="true" />
<EditText
android:id="@+id/mt_editText"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:hint="@string/action_search"
android:imeOptions="flagNoExtractUi|actionSearch"
android:inputType="text"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="visible"/>
<ImageView
android:id="@+id/mt_clear"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:padding="12dp"
android:src="@drawable/ic_close_black_48dp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/last"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_marginTop="48dp">
<View
android:id="@+id/mt_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/searchBarDividerColor" />
<android.support.v7.widget.RecyclerView
android:id="@+id/mt_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
<ImageView
android:id="@+id/mt_search"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="?selectableItemBackgroundBorderless"
android:clickable="false"
android:padding="12dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_magnify_black_48dp"
android:visibility="visible" />
<View
android:id="@+id/mt_menu_divider"
android:layout_width="1dp"
android:layout_height="48dp"
android:layout_alignParentRight="true"
android:layout_marginRight="48dp"
android:background="@color/searchBarDividerColor"
android:clickable="false"
android:visibility="gone"
android:layout_alignParentEnd="true"
android:layout_marginEnd="48dp" />
</RelativeLayout>
</android.support.v7.widget.CardView>
</merge>
И вот как я вызываю элемент управления в моем XML:
<tk.supernovaic.MaterialSearchBar.MaterialSearchBar
android:id="@+id/searchBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:mt_navIconEnabled="true"
app:mt_placeholder="@string/HeaderByTime" />
были * Что я до сих пор пробовал? **
Я попытался добавить высоту вручную к предыдущему элементу управления, но это не сработало:
android:elevation="9dp"
Также я попытался установить конкретную высоту:
android:layout_height="52dp"
И тогда результаты не отображались.
Если вы хотите углубиться в контроль, вы можете проверить мой репозиторий:
https://github.com/FANMixco/Xamarin-SearchBar/tree/master/tk.supernovaic.MaterialSearchBar
Кроме того, это код, на котором я основал свою собственную версию:
https://github.com/mancj/MaterialSearchBar