前言
本身想用snackbar实现类似dialog或者popupwindow的方式,使布局不侵入。但是发现如果要控制位置的话,必须去改activity布局,因此只得放弃。但是用法还是在这里存一下,也许哪天就用到啦
用法(包含自定义样式)
public static void showSnackBar(@NonNull View view, @NonNull String msg, boolean autoDismiss, String action, int bottomMargin, final ISnackBarClickEvent iSnackBarClickEvent) {
int duringTime;
if (autoDismiss) {
duringTime = Snackbar.LENGTH_LONG;
} else {
duringTime = Snackbar.LENGTH_INDEFINITE;
}
Snackbar snackbar;
snackbar = Snackbar.make(view, msg, duringTime);
if (!TextUtils.isEmpty(action)) {
snackbar.setAction(action, new View.OnClickListener() {
@Override
public void onClick(View view) {
iSnackBarClickEvent.clickEvent();
}
});
}
View snackBarView = snackbar.getView();
snackBarView.setBackgroundResource(R.drawable.trtc_live_20corner_blue_bg);
snackbar.setActionTextColor(ContextCompat.getColor(view.getContext(), R.color.white));
TextView textView = (TextView) snackBarView.findViewById(R.id.snackbar_text);
Drawable drawable = ContextCompat.getDrawable(view.getContext(), R.drawable.trtc_net_icon);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
textView.setCompoundDrawables(drawable, null, null, null);
textView.setCompoundDrawablePadding(20);
Button actionView = snackBarView.findViewById(R.id.snackbar_action);
actionView.setText(action);
actionView.setTextColor(ContextCompat.getColor(view.getContext(), R.color.white));
actionView.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
snackbar.show();
}
public interface ISnackBarClickEvent {
void clickEvent();
}
snackbar的xml布局
其实上边的控制就是对snackbar布局的更改,我用的是material-1.2.1的,这里是官方布局
<view
xmlns:android="http://schemas.android.com/apk/res/android"
class="com.google.android.material.snackbar.SnackbarContentLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<TextView
android:id="@+id/snackbar_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical|left|start"
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:ellipsize="end"
android:maxLines="@integer/design_snackbar_text_max_lines"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.Design.Snackbar.Message"/>
<Button
android:id="@+id/snackbar_action"
style="?attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/design_snackbar_extra_spacing_horizontal"
android:layout_marginLeft="@dimen/design_snackbar_extra_spacing_horizontal"
android:layout_gravity="center_vertical|right|end"
android:minWidth="48dp"
android:textColor="?attr/colorAccent"
android:visibility="gone"/>
</view>
网友评论