8

У меня возникли проблемы с стилем в моих флажках, которые отображаются в списках просмотров. Тема, которую использует мое приложение, - Holo, но флажки отображаются со старым стилем. Флажки, которые появляются в другом месте, выглядят отлично. Я не делаю ничего такого, как создание собственного стиля. Скриншоты:Элемент флажка в списке неверен

enter image description here

Флажки должны выглядеть, как на рисунке справа. Это указано в версии 4.0. Эти флажки выглядят так, как будто они должны быть на другом устройстве, которое я пытался с помощью v4.4.2.

XML для строки списка следует:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <CheckBox android:id="@+id/ListRow_Task_TaskComplete" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="6sp" 
     android:focusable="false" /> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="7dip" 
     android:paddingBottom="7dip" 
     android:layout_toRightOf="@+id/ListRow_Task_TaskComplete" 
     android:layout_centerVertical="true" > 

     <TextView android:id="@+id/ListRow_Task_Name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="16sp" /> 

     // next two textviews are programmatically hidden right now 
     <TextView android:id="@+id/ListRow_Task_Deadline" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="" 
      android:textSize="12sp" /> 

     <TextView android:id="@+id/ListRow_Task_Tags" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:drawableLeft="@drawable/icon_tag" 
      android:drawablePadding="4dip" 
      android:textSize="12sp" /> 

    </LinearLayout> 

</RelativeLayout> 

Как я могу сделать флажки на левый взгляд, как они должны?

+0

сделал и понял, главная причина ?! У меня есть аналогичная проблема, и мне просто интересно, какой телефон вызывает у вас смешные проблемы .. Samsung Galaxy S4, который есть .. – Ewoks

+0

Я не полностью помню причину, или я даже понял это. Я только что закончил тем, что использовал копию флажкового искусства из Холо. Извините ... – JustcallmeDrago

+0

Телефон, который я использовал, это не выглядит правильно, это Galaxy S2, и тот, который работал правильно, был Nexus 7 – JustcallmeDrago

ответ

3

Скопируйте Флажок изображение Голографического из андроида вытяжки папки для всех ПИ и резолюции. Затем установите атрибут android: button в новый селектор xml. Таким образом, у вас будет полный контроль над тем, как он выглядит на целевом устройстве.

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_checked="true" android:state_focused="true" 
      android:drawable="@drawable/btn_check_on_focused_holo_light" /> 
    <item android:state_checked="false" android:state_focused="true" 
      android:drawable="@drawable/btn_check_off_focused_holo_light" /> 
    <item android:state_checked="false" 
      android:drawable="@drawable/btn_check_off_holo_light" /> 
    <item android:state_checked="true" 
      android:drawable="@drawable/btn_check_on_holo_light" /> 
</selector> 
+1

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

+0

Это, кажется, лучшее решение, особенно учитывая комментарий @ CRSardar. Спасибо. – JustcallmeDrago

+0

Это не помогает, @JustcallmeDrago, это сработало для вас? –

0

У меня также была эта проблема. Я использую Samsung Galaxy S4, и CheckBox в моем приложении выглядит старым типом школы. Если я запустил одно и то же приложение в «Android Emulator», он выглядит отлично, как я хочу.

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

+0

Samsung Galaxy S4, который есть !!! победитель телефон .. для всех проблем ... – Ewoks

0

Попробуйте установить targetSdkVersion в файле AndroidManifest.xml последних один (убедитесь, что у вас есть эта версия SDK скачала):

android:targetSdkVersion="19" 
+0

это действительно не может быть источником проблемы, потому что он пробовал одно и то же приложение с тем же манифестом на двух разных устройствах. – Ewoks

3

Недавно я столкнулся с одной проблемой и нашел реальное решение, а не только обходное решение.

Когда вы раздувать свои взгляды в getView() метод:

public View getView(int position, View convertView, ViewGroup parent) { return inflater.inflate(R.layout.list_item, parent, false); }

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

Поэтому убедитесь, что вы создаете Inflater в одном из следующих или аналогичных способов:

  • LayoutInflater.from(activity);
  • getLayoutInflater(); // from within activity
  • LayoutInflater.from(parent.getContext());

Для того, чтобы быстро проверить это решение, просто заменить :

return inflater.inflate(R.layout.list_item, parent, false);

с:

return LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);

+0

Этот способ работает потрясающе, спасибо !!! – Jokus