[英]How to make modification Android Snackbar containing with LayoutInflater button and editText
My project now is how to make a Snackbar displayed at the bottom of the screen.我现在的项目是如何制作一个显示在屏幕底部的 Snackbar。 The Snackbar contain with editText and three button for selection categories. Snackbar 包含 editText 和三个用于选择类别的按钮。 I use LayoutInflater and follow these code for my script, and it's work.我使用 LayoutInflater 并为我的脚本遵循这些代码,它的工作。 My problem now is, how to get response when user click the button ?我现在的问题是,当用户单击按钮时如何获得响应? Here my code这是我的代码
@Override
public void onClick(View v) {
CoordinatorLayout linearLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout);
final Snackbar snackbar = Snackbar.make(linearLayout, "", Snackbar.LENGTH_INDEFINITE);
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
// Inflate your custom view with an Edit Text
LayoutInflater objLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View snackView = objLayoutInflater.inflate(R.layout.custom_snac_layout, null);
// custom_snac_layout is your custom xml
layout.addView(snackView, 0);
snackbar.show();
}
and here my snacbar.xml layout这里是我的 snacbar.xml 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:id="@+id/event_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollHorizontally="false"
android:hint="@string/type_your_message"
android:inputType="textNoSuggestions"
android:maxLines="4"
android:singleLine="false"
android:textSize="18sp"
android:paddingLeft="4dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_mapel"
android:onClick="mapel"
android:layout_gravity="bottom|right"
android:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginRight="@dimen/fab_margin_right"
android:src="@drawable/ic_image_edit" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginRight="@dimen/fab_margin_right"
android:src="@drawable/ic_image_edit" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginRight="@dimen/fab_margin_right"
android:src="@drawable/ic_image_edit" />
</LinearLayout>
here is the source required to implement button listener to your snackbar custom layout.这是在您的小吃店自定义布局中实现按钮侦听器所需的源。
@Override
public void onClick(View v) {
CoordinatorLayout linearLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout);
final Snackbar snackbar = Snackbar.make(linearLayout, "", Snackbar.LENGTH_INDEFINITE);
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
// Inflate your custom view with an Edit Text
LayoutInflater objLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View snackView = objLayoutInflater.inflate(R.layout.custom_snac_layout, null);
// custom_snac_layout is your custom xml
// button id for snackbar
Button button_mapel = (Button) snackView.findViewById(R.id.btn_mapel);
// perform button click listener
button_mapel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// here perform your button click task
}
});
layout.addView(snackView, 0);
snackbar.show();
}
Follow this documentation遵循此文档
https://developer.android.com/training/snackbar/action.html https://developer.android.com/training/snackbar/action.html
public class MyUndoListener implements View.OnClickListener{
&Override
public void onClick(View v) {
// Code to undo the user's last action
}
}
Now for setAction()现在为 setAction()
Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
R.string.email_archived, Snackbar.LENGTH_SHORT);
mySnackbar.setAction(R.string.undo_string, new MyUndoListener());
mySnackbar.show();
You have to get id of your Button
.您必须获得Button
id 。 And have to set clickListener
.并且必须设置clickListener
。
You have to just replace your code with this.你只需要用这个替换你的代码。
I have put listener on btn_mapel
, you can put any other button according to your requirement.我已经在btn_mapel
上放置了侦听btn_mapel
,您可以根据需要放置任何其他按钮。
Try this.尝试这个。
@Override
public void onClick(View v) {
CoordinatorLayout linearLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout);
final Snackbar snackbar = Snackbar.make(linearLayout, "", Snackbar.LENGTH_INDEFINITE);
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
// Inflate your custom view with an Edit Text
LayoutInflater objLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View snackView = objLayoutInflater.inflate(R.layout.custom_snac_layout, null);
// custom_snac_layout is your custom xml
Button mapelBt = (Button)snackView.findViewById(R.id.btn_mapel);
mapelBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get your button click callback here
}
});
layout.addView(snackView, 0);
snackbar.show();
}
Try This,尝试这个,
Button btn_feed_back = (Button)snackView.findViewById(R.id.feedback);
btn_feed_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.