TextView忽略渐变 - Android

时间:2013-04-21 22:20:41

标签: android

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

enter image description here

Gradient.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中创建onCreate

 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>

1 个答案:

答案 0 :(得分: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孩子