我在堆栈溢出方面对此进行了广泛研究,但没有找到适合我的答案。我有一个 ImageView
,它有一个 elevation
(用于阴影效果),我想要一个 TextView
。我将对 GridLayout
中的许多元素重复此操作,因此 bringToFront()
看起来不是一个好的选择。此外,我不希望 TextView
有阴影,因此 xml
的 translationZ
属性也不起作用。最后,我尝试对这两个元素使用 FrameLayout
,但我认为由于 Imageview
的 elevation 属性,TextView
仍然保留在背部。以下是我的代码
<android.support.v7.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_columnWeight="1"
android:layout_rowWeight="2"
android:layout_column="0"
android:layout_row="0"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
app:cardElevation="8dp"
app:cardCornerRadius="8dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_gravity="center">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:gravity="center">
<TextView
android:id="@+id/bids_number"
android:background="@drawable/circulerimageblue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="10"
android:layout_marginBottom="-7dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:textStyle="normal|bold"
android:textColor="@color/colorSecondary"
android:layout_gravity="top|right" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerHorizontal="true"
android:elevation="6dp"
android:id="@+id/bids_icon"
android:background="@drawable/circulerimageunselected"
android:layout_marginBottom="6dp"
android:src="@drawable/icon_profile"
android:adjustViewBounds="true"
android:scaleType="fitXY"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get Bids"
android:textAppearance="@style/TextAppearance.AppCompat"
android:textStyle="normal|bold"
android:fontFamily="sans-serif" />
</LinearLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
这是我想要实现的目标的图片
最佳答案
NOTE : Please don't use negative margin
试试这个 USE CoordinatorLayout
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_row="0"
android:layout_rowWeight="2"
app:cardCornerRadius="8dp"
app:cardElevation="8dp">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/topPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/bids_icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="6dp"
android:adjustViewBounds="true"
android:elevation="6dp"
android:scaleType="fitXY"
android:src="@drawable/kid" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get Bids"
android:textAppearance="@style/TextAppearance.AppCompat"
android:textStyle="normal|bold" />
</LinearLayout>
<TextView
android:layout_width="20dp"
android:layout_height="wrap_content"
android:background="@color/colorPink"
android:text="10"
android:textStyle="normal|bold"
app:layout_anchor="@+id/bids_icon"
app:layout_anchorGravity="right" />
</android.support.design.widget.CoordinatorLayout>
</android.support.v7.widget.CardView>
输出
关于android - 将 TextView 放置在具有高度的 ImageView 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51550818/