Je déteste répondre à ma propre question, mais dans ce cas, je pense que je dois le faire. Après l'avoir vérifié, @Falmarri était sur la bonne voie avec sa réponse. Le problème est que le contrôle CheckBox d'Android utilise déjà la propriété android: paddingLeft pour obtenir le texte où il se trouve.
La ligne rouge montre la valeur de décalage paddingLeft de l'ensemble du CheckBox
Si je remplace simplement ce remplissage dans ma disposition XML, cela gâche la disposition. Voici ce que fait la définition de paddingLeft = "0":
Il s'avère que vous ne pouvez pas résoudre ce problème en XML. Vous devez le faire en code. Voici mon extrait de code avec une augmentation de remplissage codée en dur de 10dp.
final float scale = this.getResources().getDisplayMetrics().density;
checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f),
checkBox.getPaddingTop(),
checkBox.getPaddingRight(),
checkBox.getPaddingBottom());
Cela vous donne ce qui suit, où la ligne verte est l'augmentation du rembourrage. C'est plus sûr que de coder en dur une valeur, car différents appareils peuvent utiliser différents drawables pour la case à cocher.
MISE À JOUR - Comme les gens l'ont récemment mentionné dans les réponses ci-dessous, ce comportement a apparemment changé dans Jelly Bean (4.2). Votre application devra vérifier sur quelle version elle s'exécute et utiliser la méthode appropriée.
Pour 4.3+, il suffit de définir padding_left. Voir la réponse de htafoya pour plus de détails.
TextView
avecdrawableLeft
et utiliserdrawablePadding
pour donner de l'espace au texte. Dans le code, basculez simplement les états sélectionnés et non sélectionnés.