Подтвердить что ты не робот

Пользовательский вид Android должен расширять AppCompatTextView

Я создал простой пользовательский вид, который расширился от TextView, в Android Studio я получаю это wanrning

This custom view should extend android.support.v7.widget.AppCompatTextView instead

и я не могу использовать clickable propertytise, например:

   <com.myapp.test.Widgets.FontAwesome
       android:layout_width="60dp"
       android:layout_height="match_parent"
       android:layout_marginRight="5dp"
       android:background="?selectableItemBackground"
       android:gravity="center"
       android:clickable="@{()->presenter.clickOnSend()}"
       android:text="@string/font_icon_post_message"
       android:textColor="@color/gray_text_color"
       android:textSize="40sp"/>

Я получаю эту ошибку для clickable propertytise:

Error:(91, 46) Cannot find the setter for attribute 'android:clickable' with parameter type lambda on com.myapp.test.Widgets.FontAwesome. 

введите описание изображения здесь

мой пользовательский класс:

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;

public class FontAwesome extends TextView {
    public FontAwesome(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public FontAwesome(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public FontAwesome(Context context) {
        super(context);
        init();
    }

    private void init() {
        Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
                "fonts/fontawesome.ttf");
        setTypeface(tf);
    }
}

как я могу решить эту проблему?

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ: Если вы используете библиотеки androidx вместо (устаревших) библиотек поддержки v7 (что вы должны сделать сейчас...), используйте это вместо:

import androidx.appcompat.widget.AppCompatTextView;

СТАРЫЙ ОТВЕТ: (все еще полезно, если вы еще не мигрировали на androidx...)

Этот пользовательский вид должен расширять android.support.v7.widget.AppCompatTextView.

Это Warning, а не ошибка.

Вместо

public class FontAwesome extends TextView

Вы должны использовать AppCompatTextView

public class FontAwesome extends AppCompatTextView 

Ответ 2

У меня была похожая проблема, но она исправлена. Вероятно, вы видите результат только в первый раз. Я не проверял, чтобы пересобрать проект снова без запуска приложения.

 import android.content.Context;
    import android.graphics.Color;
    import android.support.v7.widget.AppCompatTextView;
    import android.util.AttributeSet;

    public class CustomTxtView extends AppCompatTextView {


    public CustomTxtView(Context context) {
        super(context);
        init();
    }

    public CustomTxtView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomTxtView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }


    private void init(){
        setText("Hello World");
        setTextColor(Color.RED);
    }
}