android标题不透明度

时间:2012-11-27 16:19:24

标签: android header opacity

我正在尝试使用透明标题构建类似的listView,例如Attaching a fixed, transparent, header to a ListView? 但是我怎样才能改变标题不透明度? 我尝试使用颜色代码使用alpha:“#00bebebe”但是没有用。

我的标题背景“title_bar_background”

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<!-- Top color -->
<item android:bottom="20dip">
    <shape android:shape="rectangle">
        <solid android:color="#bebebe"
             /> 
    </shape>
</item>

<!-- Bottom color -->
<item android:top="20dip">
    <shape android:shape="rectangle">
        <solid android:color="#696969" /> 
    </shape>
</item>
</layer-list>

我的标题布局“custom_title”

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
.... 
android:background="@drawable/title_bar_background"
android:id="@+id/customLayout"
>

我的listView包含custom_title

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
..... >


<include  
     layout="@layout/custom_title"
     android:layout_height="40dip"
     android:layout_width="fill_parent"/>

这项改变不透明度的工作

View backgroundImg = findViewById(R.id.mycustomLayout);
    Drawable background = backgroundImg.getBackground();
    background.setAlpha(40);

但只有当我不在其他布局中包含该布局时它才有效。但是当我在其他布局中包含该布局时,我怎么能设置不透明度? (就像我上面的xml布局一样)

2 个答案:

答案 0 :(得分:1)

按ID查找布局,并通过设置Alpha来更改不透明度。

答案 1 :(得分:-1)

只需通过它的ID找到您的标题布局,并执行以下操作:

LinearLayout headerLayout = (LinearLayout)findViewById(R.id.layoutHeader); 
AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); // Make animation instant
alpha.setFillAfter(true); // Tell it to persist after the animation ends
// And then on your layout
headerLayout.startAnimation(alpha);

还有View.setAlpha();但它是自API级别11以来。

编辑:

我们认为你的布局在另一个布局中:

<RelativeLayout android:id="@+id/parentLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
<ImageView ...
bla bla bla />

<LinearLayout android:id="@+id/transparentLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
... your views
</LinearLayout>
...some other views

</RelativeLayout>

然后你就是这样:

LinearLayout mytransparentLayout = (LinearLayout) findViewById(R.id.transparentLayout);
mytransparentLayout.setAlpha(0.5f);