Oggi mi sono occupato di un problema simile e ho scoperto che a partire da Jelly Bean è possibile utilizzare setSwitchMinWidth(width);
per impostare la larghezza minima dell'interruttore completo. Ho anche pensato, tuttavia, che se i tuoi testi sono troppo grandi, il widget è appena troncato nella parte sinistra. La modifica del padding di testo predefinito sul pollice potrebbe tornare utile qui, con setThumbTextPadding(num);
è possibile modificarlo.
L'unico problema - e questo è un blocco in realtà - ho inciampato finora è che si dovrebbe naturalmente espandere l'interruttore in base alle dimensioni del contenitore genitore. Per questo ho avvolto l'interruttore in una configurazione lineare (il quale fornisce anche fallback per API < = 15) e provato questo:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (android.os.Build.VERSION.SDK_INT >= 16) {
adaptSwitchWidth(w);
}
}
@TargetApi(16)
private void adaptSwitchWidth(int containerWidth) {
Switch sw = (Switch) compoundButton;
sw.setSwitchMinWidth(containerWidth);
}
Purtroppo - per qualsiasi motivo stupido - il widget interruttore non reagisce a tale . Ho provato a farlo in un OnLayoutChangeListener
senza avere successo neanche. Idealmente, la dimensione attuale del interruttore deve anche essere conosciuto in quello stato e ho voluto a "distribuire" lo spazio libero per l'imbottitura in questo modo:
int textPadding = Math.max(0, (sw.getWidth() - containerWidth)/4);
sw.setThumbTextPadding(textPadding);
ma sw.getWidth()
ritorna ancora 0 a onSizeChanged()
, probabilmente perché è ancora non disposti correttamente. Sì, ci siamo quasi ... se si imbattono in qualcosa, fatemelo sapere :)
fonte
2012-09-25 16:19:15
valid..m di fronte lo stesso problema :( –