-1

我正在尝试构建类似的带有透明标题的列表视图,例如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 布局)

4

2 回答 2

2

通过 id 查找布局并通过设置 Alpha 更改不透明度。

于 2015-11-02T06:34:02.053 回答
-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);
于 2012-11-27T16:29:24.970 回答