2016-05-28 4 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> 

Линейная схема с идентификатором 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

Что такое цвет андроида: background = "@ color/curio_background"? –

+0

Это цвет # FFD162 :) – JB2

+0

Возможный дубликат [Прозрачный макет в Android?] (Http://stackoverflow.com/questions/4285981/transparent-layout-in-android) – JB2

ответ

0

Создать в вашем color.xml: <color name="colorTransparent">#00000000</color> и использовать android:background="@color/colorTransparent"

+0

То же самое, что использовать '@android : цвет/прозрачный', который не работает. '@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)); 

, а также добавить android:background="@android: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

отлично работает! Вторая строка с конца может быть удалена. – Shirane85

3

Ответ гораздо проще: просто добавьте эту строку

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)' –

Смежные вопросы