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);
}