Widget Android dimensiones?
Tengo un widget que es el ancho es "180dp". Quiero mostrar una actividad cuando el usuario hace clic en un botón en el widget, y el ancho de la actividad debe ser igual a width.It Widget parece simple, pero no pude resolver it.Indeed Supongo que al menos una de estas tres maneras me ayuda, pero no lo hacen:
1- Estableciendo la dimensión de la actividad en manifestar exactamente "180dp", pero no pude encontrar ninguna propiedad como "android: width" para la etiqueta Activity en manifesto.
2- Obtener las dimensiones del widget en su método AppWidgetProvider , onReceive () por intento.getSourceBounds (). GetWidth () y usarlo en Activity onAttachedToWindow ():
En AppWidgetProvider:
@Override public void onReceive(Context context, Intent intent) { ... int mWidgetHeight = intent.getSourceBounds().height(); int mWidgetWidth = intent.getSourceBounds().width(); ... App.setmWidgetHeight(mWidgetHeight); App.setmWidgetWidth(mWidgetWidth); ... }
En Actividad:
- Entrada de números de Android con signo más y menos
- Cómo implementar correctamente onRestoreInstanceState () para una subclase DialogPreference?
- Registrar BroadcastReceiver to Widget (Diferencia de objeto de contexto)
- Cómo cambiar la altura de la vista de lista progmmatically ..?
- Actualizar datos en Arrayadapter
@Override public void onAttachedToWindow() { View view = getWindow().getDecorView(); WindowManager.LayoutParams lp = (LayoutParams) view.getLayoutParams(); lp.gravity = Gravity.LEFT | Gravity.TOP; super.onAttachedToWindow(); ... lp.width = App.getmWidgetWidth(); lp.height = App.getmWidgetHeight(); ... getWindowManager().updateViewLayout(view, lp); }
En este caso, cuando pruebo mi aplicación en el emulador, el ancho de la actividad es aproximadamente la mitad del ancho del widget.
3- Cambio de "180 dp" a píxel:
@Override public void onAttachedToWindow() { View view = getWindow().getDecorView(); WindowManager.LayoutParams lp = (LayoutParams) view.getLayoutParams(); lp.gravity = Gravity.LEFT | Gravity.TOP; ... super.onAttachedToWindow(); ... DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); float xDpi = metrics.xdpi; float yDpi = metrics.ydpi; ... lp.width = (int) (180 * (xDpi / 160)) ; lp.height = (int) (120 * (yDpi / 160)); ... getWindowManager().updateViewLayout(view, lp); }
En este caso, en el resultado del emulador parece estar bien, pero en el dispositivo (GalaxyTab 2.3.3), el ancho de la actividad está en aproximadamente (2/3) del ancho del widget.
En resumen, esta es mi pregunta:
Si tengo las dimensiones de mi widget en dp, ¿cómo puedo establecer las dimensiones de la actividad exactamente iguales a ella?
- Menú contextual de un ListFragment
- Ocultar widget de la aplicación dependiendo del nivel de la API
- Cómo recuperar texto de Textbox en el widget de Android?
- Android EditarTexto Fondo transparente
- Android TextView id con una variable?
- Creación de imágenes personalizadas
- Permiso del proveedor de contenido al acceder a través de android.widget.RemoteViewsService
- Barra de título similar a Facebook en Android
Tratar
DisplayMetrics metrics = getApplication().getApplicationContext().getResources().getDisplayMetrics(); metrics.widthPixels metrics.heightPixels
Sólo por curiosidad – ¿por qué necesita establecer el tamaño exacto de su actividad? Layout with android: layout_width = "fill_parent" y android: layout_height = "fill_parent" toma todo el espacio disponible en un widget, sea cual sea su tamaño.
- Android: DeadObjectException para InputMethodService (ejemplo de la API de SoftKeyboard)
- Integración de varias redes de anuncios móviles con la mediación de Admob