android imageview remoteview

android - RemoteView setLayoutParams-Cambiar el tamaño de ImageView dentro del widget de HomeScreen



(1)

Aquí hay una pequeña solución que encontré:

simplemente use

views.setViewPadding(R.id.vieId, left, top, right, bottom);

(views = RemoteViews)

Solo tiene que hacer algunos cálculos, de modo que un tamaño de icono del 100% (del tamaño más grande posible) sea igual a 0 relleno y 1% icono Tamaño igual al relleno máximo.

Funcionó sin, también, pero creo que no puede dañar agregar el

android:cropToPadding="true"

atribuir a ImageViews si usa este método.

Editar:

Olvidé mencionar que en algún momento después de configurar el relleno debería actualizar el widget (lo hago en onPause () cuando el usuario sale de la aplicación para mirar el widget). El uso de setPadding () en una actividad también conducirá a ninguna parte sin llamar a invalidate () en la Vista, para forzar un redibujado / actualización de la misma.

Aquí más código:

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // Map the values, 100 is the custom max of my seekBar // I am adding 1 to because the seekBar goes from 0-99, // but the size from 1% to 100% int iconSize = 100 - (progress+1); for (ImageView icon : icons) { // set the padding icon.setPadding(iconSize, iconSize, iconSize, iconSize); // force the ImageView to redraw with the new padding, this // serves as a live preview of the icons'' sizes. icon.invalidate(); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { // you might want to do something here } @Override public void onStopTrackingTouch(SeekBar seekBar) { // map the value int iconSize = 100 - (seekBar.getProgress()+1); // save it in your SharedPreferences or somewhere else Utils.setDefaultsInt(Con._ICONSIZE, iconSize, MainPage.this); } });

Mi aplicación muestra un widget con un total de 8 botones. Me gustaría darle al usuario la posibilidad de diseñar ese widget y personalizar el tamaño de las ImageViews que están debajo de los botones. El objetivo es dejar los Botones tal como están, pero cambiar los tamaños de ImageView dinámicamente.

Para esto, el usuario puede establecer un tamaño de icono, que se almacena en SharedPreference como un tamaño de ícono entero.

¿Cómo puedo cambiar el tamaño de un ImageView en un Widget?

Por ahora, las ImageViews se crean con el tamaño establecido en el archivo xml. ¿Cómo puedo lograr un redibujado con otro tamaño?

Supongo que no hay mucho código para publicar aquí, pero estaré encantado de hacerlo si es necesario, solo dígame si tiene una idea de qué código podría ayudar aquí.

Lo que no quiero hacer:

  • cambiar el tamaño del widget completo

  • crea toneladas de archivos de diseño para cambiar de acuerdo con iconSize

Algún código:

Así es como configuré el tamaño de ImageView en mi actividad como una vista previa del widget. icons es una matriz de ImageViews, progress hace referencia a una ProgressBar que se utiliza para elegir iconSize .

for (ImageView icon : icons) { icon.requestLayout(); // convert into actual Pixels progress = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_PX, progress, getResources().getDisplayMetrics() ); // set width and height icon.getLayoutParams().height = progress; icon.getLayoutParams().width = progress; sizeText.setText("" + progress); }