modal - ¿Cómo crear un diálogo de alerta personalizado en Android?
modal en android (9)
esta trabajando para mi
Dialog m_dialog;
m_dialog = new Dialog(BusinessDetail.this);
m_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater m_inflater = LayoutInflater.from(BusinessDetail.this);
View m_view = m_inflater.inflate(R.layout.rateus_popup, null);
myPopLay = (LinearLayout) m_view.findViewById(R.id.myPopLay);
m_dialog.setContentView(m_view);
m_dialog.show();
Estoy desarrollando una aplicación de muestra. Puedo mostrar alerta al hacer clic en el botón con un título y un botón. Pero ahora quiero mostrar una ventana emergente con un nombre de usuario (Etiqueta) y un campo de texto (campo Editar) y un botón. al hacer clic en button.can puedo hacer otro archivo XML emergente para eso?
public void selfDestruct(View view) {
// Kabloey
Log.d("Naveen", "Test====");
System.out.println("----------------------ghfgjhf-----------------");
AlertDialog alertDialog = new AlertDialog.Builder(SecondActivity.this).create();
alertDialog.setTitle("Reset...");
alertDialog.setMessage("R u sure?");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//here you can add functions
} });
alertDialog.show();
}
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/self_destruct"
android:onClick="selfDestruct" />
Aquí está el código xml y el código de actividad verlo.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="56dp"
android:text="Popup Window will display on this Activity" />
<Button
android:id="@+id/popupbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Show Popup" />
</RelativeLayout>
Archivo de actividad
package com.nkm.popup;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
public class PopupDemoActivity extends Activity implements OnClickListener {
LinearLayout layoutOfPopup;
PopupWindow popupMessage;
Button popupButton, insidePopupButton;
TextView popupText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
popupInit();
}
public void init() {
popupButton = (Button) findViewById(R.id.popupbutton);
popupText = new TextView(this);
insidePopupButton = new Button(this);
layoutOfPopup = new LinearLayout(this);
insidePopupButton.setText("OK");
popupText.setText("This is Popup Window.press OK to dismiss it.");
popupText.setPadding(0, 0, 0, 20);
layoutOfPopup.setOrientation(1);
layoutOfPopup.addView(popupText);
layoutOfPopup.addView(insidePopupButton);
}
public void popupInit() {
popupButton.setOnClickListener(this);
insidePopupButton.setOnClickListener(this);
popupMessage = new PopupWindow(layoutOfPopup, LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
popupMessage.setContentView(layoutOfPopup);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.popupbutton) {
popupMessage.showAsDropDown(popupButton, 0, 0);
}
else {
popupMessage.dismiss();
}
}
}
Prueba esto...
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Reset...").setView(editText)
.setMessage("R u sure?").setCancelable(true)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
//Do here whatever.....
}
});
AlertDialog alert = builder.create();
alert.show();
}
Puedes realizar una actividad normal y configurar el android:theme
en diálogo:
<activity
android:name="com.example.carsharingkitdemo.YourPopUpActivity"
android:theme="@android:style/Theme.Holo.Dialog" >
</activity>
y en su archivo xml
para esta actividad puede decidir la altura y el ancho de este campo de diálogo. Por ejemplo:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:layout_height="100dp">
Lo importante es la parte manifiesta.
Puedes usar Dialog , como este código:
final Dialog dialog = new Dialog(context);
// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom);
dialog.setTitle("Title...");
// set the custom dialog components - text, image and button
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Android custom dialog example!");
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
Si desea eliminar la barra de título, utilice este código después de definir:
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Trate de usar: PopupWindow
Puede encontrar un ejemplo aquí: http://android-er.blogspot.co.il/2012/03/example-of-using-popupwindow.html
Usaremos la clase PopupWindow para crear la ventana emergente.
Una cosa que me gustaría mencionar es que queremos que la ventana emergente se adjunte al botón que lo abrió. Por ejemplo, si el botón "Mostrar elemento emergente" de la captura de pantalla anterior se ubicaría en el centro de la pantalla, queremos que la ventana emergente se pegue a la posición del botón. Para lograr esto, primero debemos obtener las posiciones "x" e "y" del botón en la pantalla y pasarlas a la ventana emergente. Luego, usaremos un desplazamiento para alinear la ventana emergente correctamente: un poco a la derecha y un poco más abajo, de modo que no se superponga a todo el botón.
Otro aspecto que me gustaría mencionar es que usaremos una imagen de fondo de 9 parches para la ventana emergente, para que se vea más elegante. Pero, por supuesto, puede omitirlo y poner el fondo que desee, o ningún fondo en absoluto.
Cree el archivo layout / main.xml y agregue un botón:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#CCC"
android:orientation="vertical" >
<Button
android:id="@+id/show_popup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Popup" />
</LinearLayout>
Cree un nuevo archivo de diseño: layout / popup_layout.xml que defina el diseño de la ventana emergente.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:id="@+id/popup"
android:layout_height="wrap_content"
android:background="@drawable/popup_bg"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Popup"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a simple popup" />
<Button
android:id="@+id/close"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close" />
</LinearLayout>
Y ahora la parte más interesante. Abra el TestPopupActivity y llénelo con el siguiente código. Lea atentamente los comentarios para entender lo que está pasando.
public class TestPopupActivity extends Activity {
//The "x" and "y" position of the "Show Button" on screen.
Point p;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn_show = (Button) findViewById(R.id.show_popup);
btn_show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//Open popup window
if (p != null)
showPopup(TestPopupActivity.this, p);
}
});
}
// Get the x and y position after the button is draw on screen
// (It''s important to note that we can''t get the position in the onCreate(),
// because at that stage most probably the view isn''t drawn yet, so it will return (0, 0))
@Override
public void onWindowFocusChanged(boolean hasFocus) {
int[] location = new int[2];
Button button = (Button) findViewById(R.id.show_popup);
// Get the x, y location and store it in the location[] array
// location[0] = x, location[1] = y.
button.getLocationOnScreen(location);
//Initialize the Point with x, and y positions
p = new Point();
p.x = location[0];
p.y = location[1];
}
// The method that displays the popup.
private void showPopup(final Activity context, Point p) {
int popupWidth = 200;
int popupHeight = 150;
// Inflate the popup_layout.xml
LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup);
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup);
// Creating the PopupWindow
final PopupWindow popup = new PopupWindow(context);
popup.setContentView(layout);
popup.setWidth(popupWidth);
popup.setHeight(popupHeight);
popup.setFocusable(true);
// Some offset to align the popup a bit to the right, and a bit down, relative to button''s position.
int OFFSET_X = 30;
int OFFSET_Y = 30;
// Clear the default translucent background
popup.setBackgroundDrawable(new BitmapDrawable());
// Displaying the popup at the specified location, + offsets.
popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y);
// Getting a reference to Close button, and close the popup when clicked.
Button close = (Button) layout.findViewById(R.id.close);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popup.dismiss();
}
});
}
}
Use la siguiente codificación para mostrar un Pop up en Android.
AlertDialog.builder builder=new AlertDilaog.Builder(this);
builder.setMessage("PopUP Example");
AlertDialog alert=builder.create();
alert.setTitle("");
alert.show();
new Handler.postDelayed(new Runnable()
{
@override
public void run()
{
//TODO
alert.dismiss();
}
},1*1000);
}
Enlace de YouTube: https://www.youtube.com/watch?v=SEsVTTl6exg
custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/editText"
android:hint="Enter some thing"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp">
<Button
android:id="@+id/save"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SAVE" />
<Button
android:id="@+id/cancel"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Cancel" />
</LinearLayout>
</LinearLayout>
Necesidad de inflar custom_dialog.xml
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Alert Dialog");
final EditText editText = (EditText) dialog.findViewById(R.id.editText);
Button btnSave = (Button) dialog.findViewById(R.id.save);
Button btnCancel = (Button) dialog.findViewById(R.id.cancel);
dialog.show();