0

我有一个 TextView 覆盖在图像上,渐变作为背景。但是,正如您在图像中看到的那样,由于某种原因,TextView 使用 android:startColor 颜色作为纯色背景。

在此处输入图像描述

渐变.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
    android:endColor="#00000000"
    android:startColor="#FF999999"
    android:angle="90"/>    
</shape>

在 MainActivity 中创建

 View overlay = (View) findViewById(R.id.overlay);
    overlay.setBackgroundResource(R.drawable.gradient);
   FrameLayout.LayoutParams params =
      new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, 250);
    params.gravity = Gravity.BOTTOM;
   overlay.setLayoutParams(params);
   overlay.invalidate(); // update the view 

main_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#999999"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<FrameLayout 
android:layout_width="match_parent"
android:layout_height="250dp"
>
<ImageView
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    android:src="@drawable/statement_header" />
<View
    android:id="@+id/overlay"
    android:layout_width="fill_parent"
    android:layout_height="100dp"
  />

<TextView android:id="@+id/tvHeader"
         android:layout_width="wrap_content"
          android:layout_height="wrap_content" 
          android:textSize="20sp"
          android:textStyle="bold"
          android:text="Our Story"
          android:textColor="#FFFFFF"
          android:background="#00000000"
          android:maxLines="1"
          android:layout_marginLeft="8dp"
          android:layout_marginRight="8dp"
          android:layout_gravity="bottom" android:layout_alignParentBottom="true"
          />
</FrameLayout>
4

1 回答 1

0

尝试这个

< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#999999"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<FrameLayout 
android:layout_width="match_parent"
android:layout_height="250dp"
>
< ImageView
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    android:src="@drawable/statement_header" />
< View
    android:id="@+id/overlay"
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:background="@android:color/transparent"
  />

< TextView android:id="@+id/tvHeader"
         android:layout_width="wrap_content"
          android:layout_height="wrap_content" 
          android:textSize="20sp"
          android:textStyle="bold"
          android:text="Our Story"
          android:textColor="#FFFFFF"
          android:background="@drawable/gradient"
          android:maxLines="1"
          android:layout_marginLeft="8dp"
          android:layout_marginRight="8dp"
          android:layout_gravity="bottom" 
          android:layout_alignParentBottom="true"
          />
</FrameLayout>

无需从代码中更改背景,只需尝试使用此布局即可。如果没有必要,删除View孩子

于 2013-04-22T03:34:22.420 回答