我创建了简单的自定义视图,该视图从TextView
扩展而来,在Android Studio中我得到了这个徘徊
This custom view should extend android.support.v7.widget.AppCompatTextView instead
我不能使用clickable
财产,例如:
<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
财产的错误:
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);
}
}
我该如何解决这个问题?
答案 0 :(得分:17)
更新:如果您使用 androidx库而不是(旧版)v7支持库(,您现在应该这样做... < / em>),请改用:
import androidx.appcompat.widget.AppCompatTextView;
OLD ANSWER:(如果你尚未迁移到androidx仍然有用......)
此自定义视图应该扩展 而是替代
android.support.v7.widget.AppCompatTextView
这是Warning
,而不是错误。
而不是
public class FontAwesome extends TextView
您应该使用AppCompatTextView
public class FontAwesome extends AppCompatTextView
答案 1 :(得分:0)
我也遇到过类似的问题,但它已解决。可能您是第一次只在执行时看到结果。在没有启动应用程序的情况下,我没有测试过重新构建项目。
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);
}
}