我想知道Constraintlayout是否可以实现以下目标:
我有一个固定比率(2:1)的图像,并希望它用渐变覆盖,渐变应从图像的底部开始,并将其顶部对齐到图像高度的50%。
据我所知,这是不可能的。
使用指南不起作用,因为它只能与父/布局的百分比一起放置
使用weight
只能在链中使用,但因为我需要覆盖两个视图链不能使用,对吧?
答案 0 :(得分:1)
你可以像下面这样实现:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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="match_parent">
<ImageView
android:id="@+id/imageView4"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="2:1"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/darker_gray" />
<View
android:id="@+id/View_Top"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="4:1"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/transparent" />
<View
android:id="@+id/View_Bottom"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="4:1"
app:layout_constraintTop_toBottomOf="@id/View_Top"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/holo_orange_dark" />
</android.support.constraint.ConstraintLayout>
此处imageView以2:1的比例设置,并在Imageview上方设置2个额外视图,其中View_Top是透明的,View_Bottom是imageview的下半部分,因此您可以在View_Bottom中设置渐变。
在下面的图像中,背景颜色为灰色,您的颜色可以替换为View_Bottom颜色
答案 1 :(得分:0)
据我了解,您希望在图像上使用渐变图层。您可以通过为图像设置前景可绘制来实现:
android:foreground="@drawable/gradient-layer"
然后让您的 gradient-layer.xml 类似于
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:angle="90"
android:endColor="@color/transparent"
android:startColor="@color/color1"
android:type="linear" />
<corners android:radius="0dp"/>
</shape>
此外,如果您需要更具体的
,可以为渐变添加中间色android:centerColor="@color/color2"
答案 2 :(得分:0)
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<android.support.v7.widget.CardView
android:id="@+id/sibling"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
>
</android.support.v7.widget.CardView>
<android.support.v7.widget.AppCompatImageView
android:id="@+id/view_to_move"
app:layout_constraintBottom_toBottomOf="@id/sibling"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/sibling"
/></android.support.constraint.ConstraintLayout>
布局所需的其他属性... 重要的两个属性app:layout_constraintBottom_toBottomOf =“ @ id / sibling”和app:layout_constraintTop_toTopOf =“ @ id / sibling” 两者都必须在约束之内。