Nienawidzę odpowiadać na własne pytanie, ale w tym przypadku myślę, że muszę. Po sprawdzeniu, @Falmarri był na dobrej drodze ze swoją odpowiedzią. Problem polega na tym, że kontrolka CheckBox systemu Android korzysta już z właściwości android: paddingLeft, aby uzyskać tekst tam, gdzie jest.
Czerwona linia pokazuje wartość przesunięcia paddingLeft dla całego CheckBox
Jeśli po prostu zastąpię to wypełnienie w moim układzie XML, spowoduje to popsucie układu. Oto, co robi ustawienie paddingLeft = "0":
Okazuje się, że nie można tego naprawić w XML. Zrobisz to w kodzie. Oto mój fragment kodu ze zwiększonym zakresem wypełnienia o 10dp.
final float scale = this.getResources().getDisplayMetrics().density;
checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f),
checkBox.getPaddingTop(),
checkBox.getPaddingRight(),
checkBox.getPaddingBottom());
To daje następujące, gdzie zielona linia to wzrost wypełnienia. Jest to bezpieczniejsze niż zapisywanie wartości na stałe, ponieważ różne urządzenia mogą używać różnych rysunków dla pola wyboru.
AKTUALIZACJA - jak ludzie ostatnio wspomnieli w odpowiedziach poniżej, to zachowanie najwyraźniej zmieniło się w Jelly Bean (4.2). Twoja aplikacja będzie musiała sprawdzić, na której wersji jest uruchomiona, i użyć odpowiedniej metody.
W wersji 4.3+ jest to po prostu ustawienie padding_left. Szczegółowe informacje można znaleźć w odpowiedzi htafoya.
TextView
pomocądrawableLeft
i użycie,drawablePadding
aby zwolnić miejsce na tekst. W kodzie po prostu przełączaj wybrane i niezaznaczone stany.