2013-01-05 4 views
4

Я работаю над проектом внутри. Я хочу использовать custome image для Checkbox check/unchecked event.Пользовательские флажки показывают разные макеты для 2.3 и 4.2

внутри моего входа в XML У меня есть запись:

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="5dp" > 

     <CheckBox 
      android:id="@+id/chk_remember_me" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:button="@drawable/checkbox_uncheked" 
      android:paddingLeft="5dp" 
      android:text="Remember Me" 
      android:textColor="#024d94" 
      android:textSize="12dp" /> 
    </LinearLayout> 

Здесь я использовал android:paddingLeft="5dp" для получения пространства между кнопкой и TextView.

Моя проблема: я получил две разные точки зрения на 2,3 и 4,2

для устройства, которое имеет xhdpi или ниже плотности или, что имеет большой экран я я получаю внизу экрана (это один совершенен, как я хотите):

enter image description here

для устройства, которое имеет ИПЧР или Белу ш плотности или что имеет нормальный/небольшой экран я получаю внизу экрана:

enter image description here

Может кто-нибудь Tellme, где мне не хватает? или что-то не так в моем макете?

Я хочу тот же макет экрана, который я получаю для устройства 4.2 в обычном/большом экране.

Заранее спасибо.

+0

Вы пытались использовать TextView для отображения текста? – dmon

+0

@dmon: Thnks для вашего быстрого ответа. но я попробовал ваше предложение, которое не могло решить мою проблему. –

ответ

7

Похоже, что Checkbox уже использует прокладку по умолчанию и переопределяет ее paddingLeft. Вы должны удалить это свойство из своего XML.

Если вы все еще хотите отрегулировать прокладку, вам придется сделать это программно. Смотрите этот ответ: https://stackoverflow.com/a/4038195/832776

Чтобы использовать его только в> 4,2 можно использовать следующее, хотя я бы проверить на эмуляторах, чтобы убедиться, что этот вопрос не просто проблема только с устройствами.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
+0

Thnk вы очень много для вашей поддержки. но, удалив paddingLeft, я получаю пространство по умолчанию внутри 2.3, которое намного больше, чем я хочу. и для 4.2 я не получаю никакого пробела между кнопкой и текстом. поэтому, удалив paddingLeft, не создавайте проблему. –

+0

@Bhavesh использует 2 разных макета, один для 2.3, а другой для 4.2 – chengbo

+0

@Bhavesh: проверьте вторую часть моего ответа ... –

0

Дайте фиксированную ширину флажку, надеюсь, это может решить вашу проблему.

+0

Thnks для вашей поддержки. но попробовал, чтобы ваше предложение не смогло решить мою проблему. –

+0

вы пробовали с PaddingRight = "" ... ??? –

+0

Протестировано. Как и ожидалось, это добавляет дополнение ко всему элементу управления, а не к флажку и к тексту –

0

Не указывать прокладку, она поставляется по умолчанию с флажком.