Некоторые атрибуты стиля отсутствуют после переноса из библиотеки поддержки в AndroidX - PullRequest
2 голосов
/ 10 апреля 2019

При ссылке на https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/simple_spinner_item.xml и https://pep -security.lu / gitlab / android / pep / blame / 2f5b1397ba73f78f49f2094b9fb370d2fee62635 / k9mail / src / main / res / layout / simple_spinner_item.xml

В настоящее время у нас есть следующий элемент раскрывающегося списка. Это использует стиль ?android:attr/spinnerDropDownItemStyle

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="8dp"
    android:paddingRight="8dp">

    <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/checked_text_view_0"
        style="?android:attr/spinnerDropDownItemStyle"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:minHeight="48dp" />

</LinearLayout>

Мы используем приведенный выше XML в пользовательском ArrayAdapter. Пользовательский ArrayAdapter будет затем присоединен к Spinner

repeatInfoSpinner.setAdapter(repeatInfoArrayAdapter);

Когда мы используем библиотеку поддержки (до перехода на AndroidX), она выглядит следующим образом. Это идет с хорошим эффектом пульсации прикосновения.

enter image description here


После перехода на AndroidX это выглядит как устаревший голографический дизайн.

enter image description here


Похоже, что атрибут стиля, который ранее был найден в библиотеке поддержки (https://chromium.googlesource.com/android_tools/+/bf45c76e0eb23b7b7a9d5f26b28c16983daa173b/sdk/extras/android/support/v7/appcompat/res/values/themes.xml#33), больше не найден в AndroidX.


Могу ли я узнать, как мы можем разрешить такое, чтобы наше приложение выглядело как приложение для дизайна материалов?

Обратите внимание, я пытался ?attr/spinnerDropDownItemStyle. Это не имеет значения.

Ответы [ 2 ]

1 голос
/ 16 мая 2019

я пробую простую демоверсию в androidx

 <androidx.appcompat.widget.AppCompatSpinner
        android:id="@+id/spinner"
        android:padding="8dp"
        android:singleLine="true"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:fontFamily="sans-serif"/>

и простой код со стороны arrayAdapter дают мне правильный результат

class MainActivity : AppCompatActivity() {

val list = listOf<String>("das","fsdfs","fsdfsd","fsdfsd")

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    spinner.adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,list)
}
}

По-прежнему проблема, если у вас есть проблемы, пожалуйста, проверьте тему стиля диалога и деятельности.

смотрите мой результат ниже

enter image description here

0 голосов
/ 20 апреля 2019

Раньше у меня были подобные проблемы, оказывается, вам нужно изменить способы обращения к этим стилям, теперь они более «объектно-ориентированы» в AndroidX. В вашем случае, я думаю, вы бы использовали что-то вроде:

style="@style/Widget.AppCompat.DropDownItem.Spinner"

вместо оригинала:

?android:attr/spinnerDropDownItemStyle

Если он не разрешается, не забудьте проверить файл gradle и посмотреть, есть ли зависимость appcompat от androidx, она должна выглядеть примерно так:

implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...