为什么在 layout_height="wrap_content" 中忽略卡片提升?
Why Card elevation is ignored in layout_height="wrap_content"?
我正在创建一个应用程序并在 Xamarin.Android 中重新构建一个控件。控件按预期工作,但我注意到如果我选择 android:layout_height="wrap_content"
Elevation 消失了:
但是如果我选择 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
此外,这是我基于自己的版本的代码:
我正在创建一个应用程序并在 Xamarin.Android 中重新构建一个控件。控件按预期工作,但我注意到如果我选择 android:layout_height="wrap_content"
Elevation 消失了:
但是如果我选择 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
此外,这是我基于自己的版本的代码: