使FrameLayout中的LinearLayout不透明

时间:2015-03-25 20:54:38

标签: android android-linearlayout android-xml android-framelayout

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

enter image description here

布局如下:

<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不透明?也许不是设置只是颜色,我可以尝试使用坚固的drawable ..?

背景

我正在使用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. 将背景设置为drawable android:background="@drawable/background_error_panel",其中drawable为:

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    
        <solid android:color="#FF181818"/>
    
    </shape>
    
  5. 编辑2015年3月25日

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

    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);
        }
    
    
    }
    

1 个答案:

答案 0 :(得分:2)

您的ScrollView是透明的。根据{{​​3}},

  

子视图以堆栈形式绘制,最近添加的子项位于顶部。

因此,您需要先加载ScrollView才能将其置于后台。