SnackBar:间于Toast和dialog之间的控件,是为了弥补吐司和dialog,注意,toast无法与用户交互,dialog虽然可以,但dialog会使其他的控件无法获取焦点;SnackBar解决了这两个控件的缺点;
下面我们自定义一个吐司
package com.example.acer.tablayouttest;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void aa(View vew){
Toast toast=new Toast(this);
LayoutInflater inflater= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view=inflater.inflate(R.layout.activity_main,null);
TextView textView= (TextView) view.findViewById(R.id.tv);
textView.setText("我自己定义的吐死");
//设置吐死的布局
toast.setView(view);
//设置吐死的时长
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
}
}
使用SnackBar需要导入design包
看下代码
package com.example.acer.tablayouttest;
import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.BaseTransientBottomBar;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void aa(View vew){
// vew是锚点
Snackbar snackbar=Snackbar.make(vew,"是否开启",Snackbar.LENGTH_LONG);
snackbar.setAction("确定", new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("zhang_xin","asdfg");
}
});
snackbar.setActionTextColor(Color.RED);
//监听snackbar的显示和隐藏
snackbar.addCallback(new BaseTransientBottomBar.BaseCallback<Snackbar>() {
@Override
public void onDismissed(Snackbar transientBottomBar, int event) {
super.onDismissed(transientBottomBar, event);
Log.i("zhang_xin","消失");
}
@Override
public void onShown(Snackbar transientBottomBar) {
super.onShown(transientBottomBar);
Log.i("zhang_xin","显示");
}
});
snackbar.show();
}
}