PopupWindow en android
Para crear un PopupWindow simple de trabajo, necesitamos hacer lo siguiente:
Popup_example.xml:
- ¿Cómo puedo reemplazar mi código popupmenu con la lista popupwindow?
- Cambiar el color de fondo cuando se muestra una ventana emergente
- OnAnimationEnd no se llama, onAnimationStart funciona bien
- Excepción de Spinner de Android al hacer clic en BadTokenException
- Cómo mostrar un ListFragment existente en un DialogFragment
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="10dip" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="Test Pop-Up" /> </LinearLayout>
Código Java
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup_example, null, false),100,100, true); pw.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
Mi requisito es que necesite un
<TEXTVIEW android:layout_height="wrap_content" android:layout_width="fill_parent" />
Y un
<BUTTON android:id="@+id/end_data_send_button" android:text="Cancel"/>
En mi popup_example.xml
. ¿Cómo puedo manejar estos dos componentes en mi código Java?
- Quiero establecer el ancho de popup en tiempo de ejecución de acuerdo al tamaño del título en android
- Error de hilandero en la ventana emergente cuando hago clic
- Cuándo utilizar Android PopupWindow vs Dialog
- Android - PopupWindow sobre una vista específica
- Orden de PopupWindow z
- EditText en PopupWindow que no muestra el teclado aunque setFocusable (true)
- Facebook-esque Popup ¿Cómo?
- Popupwindow: ShowAsDropDown como superior derecha en lugar de inferior izquierda?
Aquí, te estoy dando un ejemplo de demostración. Vea esto y modifiqúelo para requisitos particulares según su necesidad.
public class ShowPopUp extends Activity { PopupWindow popUp; LinearLayout layout; TextView tv; LayoutParams params; LinearLayout mainLayout; Button but; boolean click = true; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); popUp = new PopupWindow(this); layout = new LinearLayout(this); mainLayout = new LinearLayout(this); tv = new TextView(this); but = new Button(this); but.setText("Click Me"); but.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (click) { popUp.showAtLocation(layout, Gravity.BOTTOM, 10, 10); popUp.update(50, 50, 300, 80); click = false; } else { popUp.dismiss(); click = true; } } }); params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); layout.setOrientation(LinearLayout.VERTICAL); tv.setText("Hi this is a sample text for popup window"); layout.addView(tv, params); popUp.setContentView(layout); // popUp.showAtLocation(layout, Gravity.BOTTOM, 10, 10); mainLayout.addView(but, params); setContentView(mainLayout); } }
Espero que esto solucione su problema.
Se hace con el diseño de inflado? Tal vez usted puede probar esto !!
View myPoppyView = pw.getContentView(); Button myBelovedButton = (Button)myPoppyView.findViewById(R.id.my_beloved_button); //do something with my beloved button? :p
Construyo mi propia clase, y luego la llamo de mi actividad, reemplazando pequeños métodos como showAtLocation. He encontrado su más fácil cuando tengo 4 a 5 popups en mi actividad para hacer esto.
public class ToggleValues implements OnClickListener{ private View pView; private LayoutInflater inflater; private PopupWindow pop; private Button one, two, three, four, five, six, seven, eight, nine, blank; private ImageButton eraser; private int selected = 1; private Animation appear; public ToggleValues(int id, Context c, int screenHeight){ inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); pop = new PopupWindow(inflater.inflate(id, null, false), 265, (int)(screenHeight * 0.45), true); pop.setBackgroundDrawable(c.getResources().getDrawable(R.drawable.alpha_0)); pView = pop.getContentView(); appear = AnimationUtils.loadAnimation(c, R.anim.appear); one = (Button) pView.findViewById(R.id.one); one.setOnClickListener(this); two = (Button) pView.findViewById(R.id.two); two.setOnClickListener(this); three = (Button) pView.findViewById(R.id.three); three.setOnClickListener(this); four = (Button) pView.findViewById(R.id.four); four.setOnClickListener(this); five = (Button) pView.findViewById(R.id.five); five.setOnClickListener(this); six = (Button) pView.findViewById(R.id.six); six.setOnClickListener(this); seven = (Button) pView.findViewById(R.id.seven); seven.setOnClickListener(this); eight = (Button) pView.findViewById(R.id.eight); eight.setOnClickListener(this); nine = (Button) pView.findViewById(R.id.nine); nine.setOnClickListener(this); blank = (Button) pView.findViewById(R.id.blank_Selection); blank.setOnClickListener(this); eraser = (ImageButton) pView.findViewById(R.id.eraser); eraser.setOnClickListener(this); } public void showAtLocation(View v) { pop.showAtLocation(v, Gravity.BOTTOM | Gravity.LEFT, 40, 40); pView.startAnimation(appear); } public void dismiss(){ pop.dismiss(); } public boolean isShowing() { if(pop.isShowing()){ return true; }else{ return false; } } public int getSelected(){ return selected; } public void onClick(View arg0) { if(arg0 == one){ Sudo.setToggleNum(1); }else if(arg0 == two){ Sudo.setToggleNum(2); }else if(arg0 == three){ Sudo.setToggleNum(3); }else if(arg0 == four){ Sudo.setToggleNum(4); }else if(arg0 == five){ Sudo.setToggleNum(5); }else if(arg0 == six){ Sudo.setToggleNum(6); }else if(arg0 == seven){ Sudo.setToggleNum(7); }else if(arg0 == eight){ Sudo.setToggleNum(8); }else if(arg0 == nine){ Sudo.setToggleNum(9); }else if(arg0 == blank){ Sudo.setToggleNum(0); }else if(arg0 == eraser){ Sudo.setToggleNum(-1); } this.dismiss(); } }
LayoutInflater inflater = (LayoutInflater) SettingActivity.this.getSystemService(SettingActivity.LAYOUT_INFLATER_SERVICE); PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.gd_quick_action_slide_fontsize, null),LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT, true); pw.showAtLocation(SettingActivity.this.findViewById(R.id.setting_fontsize), Gravity.CENTER, 0, 0); View v= pw.getContentView(); TextView tv=v.findViewById(R.id.....);
Button endDataSendButton = (Button)findViewById(R.id.end_data_send_button);
Del mismo modo, puede obtener la vista de texto agregando un identificador a ella.
- ¿Cómo administrar sesión para un usuario conectado desde una aplicación móvil en PHP?
- Limitaciones para abrir el archivo pdf en Android