我已覆盖 this link 中提供的EditText。
现在在布局中声明此字段时我正在使用
<com.and.ab1209.ClearableEditText
android:id=”@+id/edit_text_clearable”
android:layout_width=”fill_parent”
android:hint="My Hint Goes here"
android:layout_height=”wrap_content” />
如何在任何这些构造函数中检索此提示值。
public ClearableEditText(Context context, AttributeSet attrs, int defStyle){...}
public ClearableEditText(Context context, AttributeSet attrs){...}
我该怎么做?
答案 0 :(得分:4)
您可以通过在视图构造函数中执行以下操作来访问标准xml属性:
final String xmlns="http://schemas.android.com/apk/res/android";
//If you had a background attribute this is the resource id
int backgroundResource = attrs.getAttributeResourceValue(xmlns, "background", -1);
//This is your views hint
String hint = attrs.getAttributeValue(xmlns, "hint");
如果您的视图继承自TextView并不重要,如果您使用android:hint
指定提示,则可以在自定义视图中访问该提示。
答案 1 :(得分:1)
您无法访问“android”属性。调用getHint()
构造函数后,您可以使用super()
。
如果您想创建自己的属性,请点击this tutorial。
答案 2 :(得分:1)
在构造函数中使用this.getHint()
答案 3 :(得分:0)
您可以通过在您的属性集中定义android-namespaced属性来使用它。例如:
attrs_custom_input_field.xml
<resources>
<declare-styleable name="CustomInputField">
<attr name="android:hint" format="string" />
<attr name="android:text" format="string" />
</declare-styleable>
</resources>
CustomInputField.kt
class CustomInputField : ConstraintLayout {
// ....
// init called from all constructors
private fun init(attrs: AttributeSet?, defStyle: Int) {
val a = context.obtainStyledAttributes(
attrs, R.styleable.CustomInputField, defStyle, 0)
val hint = a.getString(R.styleable.CustomInputField_android_hint)
val text = a.getString(R.styleable.CustomInputField_android_text)
a.recycle()
// use hint and text as you want
}
}
您应该仅定义现有属性,否则,您将在编辑器中收到错误消息