2016-05-28 15 views
2

透明なボトムシートレイアウトを作成しようとしています。そのレイアウトの下にあるビューの内容を見ることができます。下のシートは期待どおりに動作していますが、背景を@nullまたは@android:color/transparentのいずれかに設定すると、レイアウトのビューは透明ではなく白です。次のように私のレイアウトは次のとおりです。Androidの透明なボトムシートレイアウト

app_bar_main.xml:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/coordinatorLayout" 
    android:background="@android:color/transparent" 
    android:fitsSystemWindows="true" 
    tools:context=".core.activities.MainActivity"> 
    <!-- stuff here --> 
    <LinearLayout 
     android:id="@+id/bottom_sheet" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:background="@null" 
     android:orientation="vertical" 
     app:layout_behavior="@string/bottom_sheet_behavior"> 
    </LinearLayout> 

</android.support.design.widget.CoordinatorLayout> 

ID bottom_sheetとの線形レイアウトは、よく、私のボトムシートを保持しています。次のようにシート自体が定義されています

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:background="@null" 
    android:layout_height="match_parent"> 
    <LinearLayout android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@null" 
     android:orientation="vertical"> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/bottom_sheet_placeholder_layout" 
      android:layout_weight="0.6" 
      android:layout_width="match_parent" 
      android:background="@null" 
      android:layout_height="50dp" 
      android:orientation="horizontal"> 
     </LinearLayout> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/bottom_sheet_layout" 
      android:layout_margin="0dp" 
      android:layout_weight="0.4" 
      android:layout_width="match_parent" 
      android:background="@color/my_background" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <ProgressBar 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:id="@+id/my_progress_bar" /> 

      <TextView 
       android:layout_marginTop="5dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:text="Large Text" 
       android:textColor="@color/my_text" 
       android:id="@+id/txt_my_info" 
       android:layout_gravity="center_horizontal" 
       android:visibility="gone" 
       android:textSize="48px" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Medium Text" 
       android:id="@+id/txt_my_address" 
       android:textColor="@color/my_secondary_text" 
       android:visibility="gone" 
       android:layout_gravity="center_horizontal" /> 
     </LinearLayout> 
    </LinearLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/btn_edit_tree_info" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:layout_marginTop="-62dp" 
     android:elevation="100dp" 
     android:src="@drawable/ic_create_black_24dp" 
     app:layout_anchor="@id/bottom_sheet_layout" 
     app:layout_anchorGravity="top|end|right" 
     app:useCompatPadding="true"/> 
</android.support.design.widget.CoordinatorLayout> 
+0

androidの色は何ですか?background = "@ color/curio_background"? –

+0

色は#FFD162です。 – JB2

+0

[Androidの透明なレイアウトは?](0120-998-301) – JB2

答えて

0

はあなたのcolor.xmlに作成します:<color name="colorTransparent">#00000000</color> をしてandroid:background="@color/colorTransparent"

+0

これは '@android :color/transparent'、これは動作しません。 '@android:color/transparent'は' #00000000 ' – JB2

+0

のように定義されています。' android:background = "@ null" ' –

+0

の代わりに使用してください。 、問題はこれが動作しないことです:) – JB2

0

変更色の背景

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/bottom_sheet_placeholder_layout" 
     android:layout_weight="0.6" 
     android:layout_width="match_parent" 
     android:background="#00FFFFFF" 
     android:layout_height="50dp" 
     android:orientation="horizontal"> 
    </LinearLayout> 

を使用し、それを試してみてください!

+0

ありがとうNguyễn。私はそれを試しましたが、残念ながらこれは動作しません。問題は続く... – JB2

1

あなたbottomSheet setupDialog(final Dialog dialog, int style)

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

でこれを追加しても答えははるかに容易であるルートビューに

1
private void setupDialogBackground() { 
    getDialog().setOnShowListener(new DialogInterface.OnShowListener() { 
     @Override 
     public void onShow(DialogInterface dialog) { 
      BottomSheetDialog d = (BottomSheetDialog) dialog; 
      FrameLayout bottomSheet = (FrameLayout) d.findViewById(R.id.design_bottom_sheet); 
      if (bottomSheet == null) 
       return; 
      bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); 
      bottomSheet.setBackground(null); 
     } 
    }); 
} 
+0

素晴らしい!最後から2番目の行は削除できます。 – Shirane85

3

android:background="@android:color/transparent"を追加:ちょうど

myDialog .getWindow() .findViewById(R.id.design_bottom_sheet) .setBackgroundResource(android.R.color.transparent);

この行を追加します。

そしてstaを変更しないでくださいndard ids(R.id.design_bottom_sheetおよびandroid.R.color.transparent)。それは、ボトムシートダイアログの背景を透明にします。

+0

ありがとうございましたが、私はそれを動作させるためにdecorViewを追加する必要がありました。 Kotlinの例: 'myDialog.window.decorView .findViewById (R.id.design_bottom_sheet) .setBackgroundResource(android.R.color.transparent)' –

関連する問題