2017-04-24 79 views
2

無論創建自定義Snackbar是否一個好主意,我都有一個自定義Snackbar,我似乎無法擺脫邊距。我已經嘗試了幾種方法,例如在代碼和佈局中進行調整,如下所示。似乎沒有任何工作。Android自定義Snackbar:無法刪除邊距

我使用Yakiv here中規定的方法:

final CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) snackBarView.getLayoutParams(); 
params.setMargins(0,0,0,0); 

和其他方法,如

android:layout_marginLeft="0dp" 
android:layout_marginStart="0dp" 
android:paddingLeft="0dp" 
android:paddingStart="0dp" ... 

的小吃吧: The snackbar with margins

我的佈局文件:

<view 
xmlns:android="http://schemas.android.com/apk/res/android" 
class="android.support.design.internal.SnackbarContentLayout" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="bottom" 
android:background="@color/realBlack" 
android:layout_marginLeft="0dp" 
android:layout_marginStart="0dp" 
android:paddingLeft="0dp" 
android:paddingStart="0dp"> 

<TextView 
    android:id="@+id/snackbar_text" 
    android:layout_width="wrap_content" 
    android:layout_height="60dp" 
    android:layout_weight="1" 
    android:paddingTop="@dimen/design_snackbar_padding_vertical" 
    android:paddingBottom="@dimen/design_snackbar_padding_vertical" 
    android:paddingLeft="@dimen/design_snackbar_padding_horizontal" 
    android:paddingRight="@dimen/design_snackbar_padding_horizontal" 
    android:textAppearance="@style/TextAppearance.Design.Snackbar.Message" 
    android:maxLines="@integer/design_snackbar_text_max_lines" 
    android:layout_gravity="center_vertical|left|start" 
    android:ellipsize="end" 
    android:textAlignment="viewStart" 
    android:text="get some"/> 

<Button 
    android:id="@+id/snackbar_action" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="@dimen/design_snackbar_extra_spacing_horizontal" 
    android:layout_marginStart="@dimen/design_snackbar_extra_spacing_horizontal" 
    android:layout_gravity="center_vertical|right|end" 
    android:minWidth="48dp" 
    android:visibility="gone" 
    android:textColor="?attr/colorAccent" 
    style="?attr/borderlessButtonStyle"/> 
</view> 

調用代碼:

 _firmwareSnackbar = CustomSnackbar.make((ViewGroup) _rootView, Snackbar.LENGTH_INDEFINITE); 

     _firmwareSnackbar.setText(_flipper.getContext().getString(R.string.settings_firmware_available)); 

     _firmwareSnackbar.setAction(_flipper.getContext().getString(R.string.settings_firmware_start), new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       _firmwareSnackbar.dismiss(); 
       _firmwareSnackbar = null; 

      } 
     }); 

     _firmwareSnackbar.show(); 

回答

3

之前顯示小吃吧,你可以刪除下列方式父佈局填充:

//... 
_firmwareSnackbar.getView().setPadding(0,0,0,0); 
_firmwareSnackbar.show(); 
0

在dimens.xml。

使用此:

<dimen name="design_snackbar_padding_horizontal">0dp</dimen> 

但請記住,這將讓適用於應用程序的所有的小吃店。