Saya benci menjawab pertanyaan saya sendiri, tetapi dalam hal ini saya pikir saya perlu. Setelah memeriksanya, @ Falmarri berada di jalur yang benar dengan jawabannya. Masalahnya adalah bahwa kontrol kotak centang Android sudah menggunakan properti android: paddingLeft untuk mendapatkan teks di mana itu.
Garis merah menunjukkan nilai offset paddingLeft dari seluruh kotak centang
Jika saya hanya mengganti bantalan itu di tata letak XML saya, itu mengacaukan tata letak. Inilah yang dilakukan pengaturan paddingLeft = "0":
Ternyata Anda tidak dapat memperbaikinya dalam XML. Anda sudah melakukannya dalam kode. Ini cuplikan saya dengan peningkatan padding hardcoded sebesar 10dp.
final float scale = this.getResources().getDisplayMetrics().density;
checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f),
checkBox.getPaddingTop(),
checkBox.getPaddingRight(),
checkBox.getPaddingBottom());
Ini memberi Anda yang berikut, di mana garis hijau adalah peningkatan padding. Ini lebih aman daripada nilai hardcoding, karena perangkat yang berbeda dapat menggunakan drawables yang berbeda untuk kotak centang.
UPDATE - Seperti orang baru-baru ini disebutkan dalam jawaban di bawah, perilaku ini tampaknya telah berubah di Jelly Bean (4.2). Aplikasi Anda perlu memeriksa versi mana yang sedang berjalan, dan menggunakan metode yang sesuai.
Untuk 4.3+ itu hanya mengatur padding_left. Lihat jawaban htafoya untuk detailnya.
TextView
dengandrawableLeft
dan gunakandrawablePadding
untuk memberi ruang pada teks. Dalam kode hanya beralih kondisi yang dipilih dan tidak dipilih.