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 での 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>
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 に答える