使 FrameLayout 中的 LinearLayout 不透明

Make LinearLayout in FrameLayout opaque

我找不到使 linearLayout 不透明的方法。无论我做什么,它总是透明的。

布局如下所示:

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

  <LinearLayout
    android:orientation="vertical"
    android:id="@+id/error_panel"
    android:layout_width="match_parent"
    android:background="@color/gray_background_dark"
    android:layout_height="wrap_content">

      <TextView
        android:id="@+id/error_message"
        android:text="@string/dummy_number"
        android:gravity="center_vertical|left"
        android:textColor="@color/red"
        android:layout_width="match_parent"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_height="wrap_content" />

  </LinearLayout>

  <!-- The content of this scroll view is seen underneath the errorPanel -->
  <ScrollView
    android:layout_height="match_parent"
    android:layout_width="match_parent">

      <!-- Content of ScrollView -->

  </ScrollView>
</FrameLayout>

如何使 LinearLayout 不透明?也许我可以尝试使用纯色可绘制对象而不是只设置颜色..?

背景

我正在使用 appcompat v7 主题<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

我尝试过的东西

  1. 将主题的 panelBackground 从透明覆盖为 <item name="android:panelBackground">@android:color/black</item>
  2. 在 LinearLayout 上将背景设置为 background=#FF000000
  3. 在 LinearLayout 上将 alpha 设置为 alpha=1
  4. Set background as drawable android:background="@drawable/background_error_panel" where the drawable is:

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    
        <solid android:color="#FF181818"/>
    
    </shape>
    

编辑 2015 年 3 月 25 日

也许是动画问题..?我使用比例动画和代码:

public void toggle() {
    panel.setText("Some text  Some text Some text Some text Some text ");
    Animation slideIn = AnimationUtils.loadAnimation(MyApplication.context, R.anim.slide_in);
    Animation slideOut = AnimationUtils.loadAnimation(MyApplication.context, R.anim.slide_out);

    if (layout.getVisibility() == View.GONE) {
        layout.setVisibility(View.VISIBLE);
        layout.startAnimation(slideIn);
        layout.setAlpha(1);
    } else {
        layout.startAnimation(slideOut);
        layout.setVisibility(View.GONE);
    }


}

是你的ScrollView透明了。根据 docs

Child views are drawn in a stack, with the most recently added child on top.

所以你需要先加载 ScrollView 才能让它在后台运行。