自定义小吃栏宽度未在平板电脑中设置MATCH_PARENT



在移动设备中,小吃栏宽度与全宽匹配,但在平板电脑中运行时不会设置match_parent。请帮帮我!代码如下

final Snackbar mSnackbar = Snackbar.make(view, "", Snackbar.LENGTH_LONG);
LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) mSnackbar.getView();
layout.setPadding(0,0,0,0);
TextView textView = (TextView) 
layout.findViewById(android.support.design.R.id.snackbar_text);
textView.setVisibility(View.INVISIBLE);
snackView = inflater.inflate(R.layout.snackbar_layout, null);
layout.addView(snackView, 0);

使用以下代码片段支持平板电脑横向模式下的全宽:

Snackbar snackbar = Snackbar.make(view, "Sample Text", Snackbar.LENGTH_LONG)
.setAction("Sample Text", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
(snackbar.getView()).getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
snackbar.show();

我认为这是平板电脑上snackbar的默认行为。有关更多信息,请看这里

如果您使用此主题:

"Theme.MaterialComponents"

小吃店有边距和圆角。

要删除边距:

View viewInSnk = snkbr.getView();
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) snkbr.getView().getLayoutParams();
params.setMargins(0, 0, 0, 0);
snkbr.getView().setLayoutParams(params);

并删除圆角:

viewInSnk.setBackgroundDrawable(getResources().getDrawable(R.drawable.snackbar_shape));

和形状 :

<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#313131"/>
<corners android:radius="0dp"/>
</shape>

使用以下代码:

Snackbar snackbar = Snackbar
.make(findViewById(put_your_parent_layout_id), "Try again!", Snackbar.LENGTH_LONG)
.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
snackbar.setActionTextColor(Color.RED);
TextView textView = (TextView) snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.YELLOW);
snackbar.show();

最新更新