Ich bin neu in Material Design. Während ich über die Anzeige eine snackbar war auf der Suche, ich sehe es zwei verschiedene Möglichkeiten gibt, es zu tun:Erstes Argument der Snackbar.make() Methode in Android
new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(mCoordinatorLayout,...
}}
new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view,...
}}
Beiden zwei funktioniert perfekt. Ich habe nicht verstanden warum? Ich denke View bezieht sich auf Button Objekt und mCoordinatorLayout bezieht sich auf CoordinatorLayout Objekt. Sie sind unterschiedliche Objekte, aber eines von zweien kann als erstes Argument der Snackbar.make() -Methode gegeben werden. Warum?
Der vollständige Quellcode ist wie folgt:
Haupt Layout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout ... >
<Button
android:id="@+id/showSnackbarButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/show_snackbar"/>
</android.support.design.widget.CoordinatorLayout>
Haupttätigkeit:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCoordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
mShowSnackbarButton = (Button) findViewById(R.id.showSnackbarButton);
mShowSnackbarButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(mCoordinatorLayout,
"This is a simple Snackbar", Snackbar.LENGTH_LONG)
.setAction("CLOSE", new View.OnClickListener() {
@Override
public void onClick(View v) {
// Custom action
Toast.makeText(MainActivity.this,"this is a toast message", Toast.LENGTH_SHORT).show();
}
}).show();
}
});
}