11

我被堵在那里了。我试图在背景上放置一个透明的视图。我尝试了几种方法。

通过 XML:

android:background="@color/transparent"

或者

android:color="#80000000"  

或者像这样引用 color.xml 文件

<resources>
    <color name="transp">#80000000</color>
</resources>

像这样使用我的 layout.xml

android:background="@color/transp"

我也尝试通过生成的代码来做到这一点

myView.getBackground().setAlpha(45);

或者

myViewm.setBackgroundResource(R.color.trans);

我看过一些相关的帖子,但没有一个答案有效。

除此之外,更奇怪的是,所有这些解决方案似乎都可以在 Eclipse 中的 GraphicalLayout 上运行良好。但是当我启动我的设备时,屏幕仍然不透明。我在该视图上画了一条线以确保发生某些事情;这条线确实显示了。

这是我的 layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

      <ImageView
        android:id="@+id/backgroundview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/space_bg"
        android:contentDescription="@string/desc" />

      <View 
        android:id="@+id/tileview"        
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/><!-- 
        android:background="@color/transp"/>-->

</RelativeLayout>

和我的代码

private ImageView bg;
    MyView tV;


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        tV = new MyView(this);

setContentView(tV);

}

和 myView onDraw

@Override
    protected void onDraw(Canvas canvas)    
    {

        super.onDraw(canvas);
        this.setBackgroundResource(R.color.transp);
        canvas.drawLine(10,20,30,40, paint);

    }

那么,我哪里错了?谢谢!!!

4

4 回答 4

13
android:background="@color/transparent"

您可以使用transparentandroid 资源中提供的颜色:

android:background="@android:color/transparent"

android:color="#80000000"  

<resources>
    <color name="transp">#80000000</color>
</resources>

myViewm.setBackgroundResource(R.color.trans);

这会给你一个非常深的灰色阴影。的 Alpha 值80充其量是半透明的。


myView.getBackground().setAlpha(45);

您可能没有正确使用它。


private ImageView bg;
MyView tV;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                 WindowManager.LayoutParams.FLAG_FULLSCREEN);

    tV = new MyView(this);

    setContentView(tV);
}

View基本上R.layout.activity_mainMyView. 我不认为这是你想要的。尝试以下操作:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/backgroundview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/space_bg"
        android:contentDescription="@string/desc" />

    <RelativeLayout 
        android:id="@+id/tileview"        
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:color/transparent" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/some_drawable_smaller_than_screen_size"
            android:layout_centerInParent="true" />

    </RelativeLayout>

</RelativeLayout>

如何膨胀这个xml:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                 WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_main);
}

id="@+id/tileview"将透明而过id="@+id/backgroundview"

于 2013-08-19T19:35:24.027 回答
8

安卓:阿尔法=“0.5”

0.0 完全透明,0.5 中等透明 1.0 完全不透明透明。**这里 TextView 是透明的。

在此处输入图像描述.在此处输入图像描述

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageview_id"
        android:layout_width="match_parent"[![enter image description here][2]][2]
        android:layout_height="130dp"
        android:scaleType="centerCrop"
        android:src="@drawable/img3" />

    <TextView
        android:id="@+id/home_tvshow_textView_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:alpha="0.5"
        android:background="@color/red"
        android:gravity="center"
        android:text="Your String"
        android:textColor="@color/black"
        android:textSize="@dimen/sp_17"
        android:layout_marginTop="@dimen/dp_110"/>


</RelativeLayout>
于 2018-05-21T07:50:23.180 回答
1
  • 使用手动视图实现

如果您在布局中使用相对布局作为父标签。

你的布局应该是这样的..

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
.
.
.
    <View
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="#EBE9E9"
       android:id="@+id/hide_view"/>
</RelativeLayout>

在您的活动中

hide_view = findViewById(R.id.hide_view);
hide_view.setAlpha(0.5f);
于 2019-05-17T08:10:47.077 回答
0

根据您的小部件设置

安卓:颜色=“#80000000”

于 2020-08-16T07:16:34.723 回答