为了账号安全,请及时绑定邮箱和手机立即绑定

Android LinearLayout,设置背景为透明

Android LinearLayout,设置背景为透明

Smart猫小萌 2023-04-13 15:28:54
我正在给一个bottom_sheet_layout. 它包含一个 LinearLayout 作为根元素。它有一个子 CardView。我试过以下方法:setting `android:background` property to     1. #00FFFFFF    2. #00000000    3. @android:color/transparentsetting the background color of LinearLayout programatically    `LinearLayout l = container.findViewById(R.id.root_element);     l.setBackgroundColor(Color.TRANSPARENT);`这是BottomSheet.Class链接到bottom_sheet_layout@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View v = inflater.inflate(R.layout.bottom_sheet_layout, container, false);LinearLayout l = container.findViewById(R.id.root_element);l.setBackgroundColor(Color.TRANSPARENT);return v;}这是Map Fragment。这是我充气的地方bottom_sheet_layout<?xml version="1.0" encoding="utf-8"?><fragment xmlns:android="http://schemas.android.com/apk/res/android"xmlns:map="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/map"android:name="com.google.android.gms.maps.SupportMapFragment"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MapsActivity" />按照几个指南,我仍然无法使该#00FFFFFF方法起作用。以编程方式将颜色设置为透明会使应用程序崩溃。似乎在 StackOverflow 的早期问题中,将背景设置为具有 alpha 值的十六进制代码用于工作。现在我只有一个暗灰色的背景。应用截图图像布局应用截图
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

如果您不使用MapView,我认为您是bottom_sheet_layout在同一片段中对 Google Map + 进行充气。如果是,我认为您的问题不是 LinearLayout 透明度,而是您插入bottom_sheet_layout到片段容器的底部,而不是地图上方。


您可以将此布局用于您的地图片段(androidx,但如果您使用的是 android,则非常相似)


<?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent">


    <!-- use this fragment for your google map -->

    <fragment

        android:id="@+id/google_map"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        />



    <!-- use this fragment for your bottom_sheet class -->    

    <fragment

        android:id="@+id/bottom_sheet"

        android:layout_margin="16dp"            // with this you do not need the LinearLayout root_element 

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        app:layout_constraintBottom_toBottomOf="parent"/>


</androidx.constraintlayout.widget.ConstraintLayout>

然后,您可以使用您的CardView( 或LinearLayout)visibility来显示或不显示该卡。


其他布局也是可能的,比如直接使用卡片视图而不是Fragment.


查看完整回答
反对 回复 2023-04-13
?
桃花长相依

TA贡献1860条经验 获得超8个赞

我想我可以为您提供某种解决方案,您也可以尝试看看是否可行。


在 .java文件中使用alpha 属性

根据您的轻松程度调整值


LinearLayout l = container.findViewById(R.id.root_element);

l.setAlpha(0.4);

您也可以在 XML 文件中使用 alpha:

<LinearLayout

  android:id="@+id/l1"

  android:alpha="0.5"

  android:layout_width="190dp"

  android:layout_height="match_parent">

0.0 表示完全透明,1.0 表示完全不透明。


让我知道是否有任何解决方案适合您。然而,在这里做更多的研究,你一定会得到一个解决方案。快乐的编码。


查看完整回答
反对 回复 2023-04-13
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

尝试背景为空。


<LinearLayout

          android:orientation="vertical"

          android:layout_width="wrap_content"

          android:layout_height="match_parent"

          android:background="@null">


        ......


      </LinearLayout>


查看完整回答
反对 回复 2023-04-13
  • 3 回答
  • 0 关注
  • 750 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信