Я делаю приложение, со следующими свойствами:Противоречивый внешний вид Флажок
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="22" />
В настоящее время я использую 3 различных методов для отображения флажков и все они выглядят по-разному!
1) Завышенные из XML:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<CheckBox
android:id="@+id/dialog_fish_autoeat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/dialog_shop_autoeat"/>
</LinearLayout>
Код:
// Passing null as the parent, as this is the layout for an AlertDialog
final View inflate = game.getLayoutInflater().inflate(
R.layout.dialog_fish, null);
builder.setView(inflate);
builder.show();
В результате Галочка, который выглядит довольно хорошо, как он вписывается в стиль диалога:
2) Создан в коде:
final CheckBox autoEquip;
autoEquip = new CheckBox(game);
autoEquip.setText(R.string.dialog_shop_autoequip);
autoEquip.setChecked(newStrength > oldStrength);
AlertDialog.Builder builder = new AlertDialog.Builder(game);
builder.setView(autoEquip);
builder.show();
В результате флажок, который выглядит темным и вне места по сравнению с диалога он добавляется:
Интересно, что 1 и 2 раньше выглядели одинаково, прежде чем я начал поддерживать более поздние версии Android.
3) X и Activity.setContentView:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:gravity="center_vertical|center_horizontal"
android:background="@color/menu_bg"
tools:context=".Menu" >
<CheckBox
android:id="@+id/endgame_submit_score"
android:text="@string/endgame_submit_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true" />
</LinearLayout>
Предварительный просмотр активности в Android Studio показывает ожидаемый результат:
Этот Checkbox использует еще один стиль, но в в этом случае он соответствует темному стилю Activity.
Однако, когда я протестировать приложение на моем Moto G, флажок не появляется:
Может кто-нибудь пролить некоторый свет на это? Почему флажки появляются в этих трех разных стилях и как я могу их контролировать? Почему последний флажок не отображается вообще?
EDIT: Эта последняя проблема, кажется, вызвана моей деятельности, используя стиль, который наследуется от Theme.AppCompat:
<style name="Menu" parent="@style/Theme.AppCompat" >
Если удалить родительскую тему, то Галочка появляется снова. Таким образом, по-видимому, есть некоторые проблемы с моей установкой appcompat. Вот как я добавляю зависимость в build.gradle:
dependencies {
compile 'com.android.support:appcompat-v7:22.1.1'
}
Дайте вашей CheckBox 'custom style', раз и навсегда. –
Спасибо, но меня больше беспокоит, почему это происходит - в частности, 3-й случай, когда флажок невидим. – Dan
Возможно, ваш Moto G использует настроенную тему? –