Нерешенная ссылка: LayoutParams на Kotlin - PullRequest
0 голосов
/ 29 декабря 2018

У меня проблема с преобразованием нашей функции из языка Java в Kotlin.Я использовал AS 3.2.1

Здесь моя функция на Java

private class ImageViewFactory implements ViewSwitcher.ViewFactory {
    @Override
    public View makeView() {
        final ImageView imageView = new ImageView(MainActivity.this);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

        final LayoutParams lp = new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        imageView.setLayoutParams(lp);

        return imageView;
    }
}

и в kotlin, как показано ниже

private inner class ImageViewFactory : ViewSwitcher.ViewFactory {
    override fun makeView(): View {
        val imageView = ImageView(this@MainActivity)
        imageView.scaleType = ImageView.ScaleType.CENTER_CROP

        val lp =
            ImageSwitcher.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
        imageView.layoutParams = lp

        return imageView
    }
}

проблема исходит от ImageSwitcher.LayoutParams, на Java ее работаЧто ж.Но, к сожалению, Котлин не распознал эти функции.

Вот мой gradle для Java-приложений

android {
    compileSdkVersion 26
    buildToolsVersion '27.0.3'

    defaultConfig { 
        minSdkVersion 19
        targetSdkVersion 26

implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation project(':card-slider')

    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.android.support:cardview-v7:26.1.0'

И ниже из моего Kotlin Gradle

android {
    compileSdkVersion 26
    defaultConfig { 
        minSdkVersion 19
        targetSdkVersion 26

implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.android.support:cardview-v7:26.1.0'

    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.facebook.android:facebook-login:[4,5)'
    implementation 'com.ramotion.cardslider:card-slider:0.3.0'

Показано синтаксическая ошибка на Android Studio Unresolved references : LayoutParams

Я не уверен, что случилось на этом.Пожалуйста, дайте мне знать, что я пропустил.Спасибо

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Когда вы хотите преобразовать Java в Kotlin, но не можете разрешить ссылку.Просто взгляните на раздел импорта файла Java, и вы сможете найти, какой из них следует импортировать в файл Kotlin.

По вашему вопросу LayoutParams импортируется из FrameLayout.LayoutParams.

enter image description here

enter image description here

0 голосов
/ 29 декабря 2018

Я думаю, что ImageSwitcher не имеет внутреннего класса LayoutParams, поэтому вы не можете напрямую получить к нему доступ, поэтому просто используйте его родительский макет, в данном случае это FrameLayout

. Для решения проблемы просто замените эту строку

val lp = ImageSwitcher.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)

С

val lp = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)

Потому что документ

   ↳    android.view.View
       ↳    android.view.ViewGroup
           ↳    android.widget.FrameLayout
               ↳    android.widget.ViewAnimator
                   ↳    android.widget.ViewSwitcher
                       ↳    android.widget.ImageSwitcher 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...