如何在android中设置自定义EditTextField属性?

时间:2010-10-21 05:21:58

标签: android

我是android的新手。可以解决以下任何一个问题吗? 我只是创建如下所示的类。我需要知道如何设置编辑文本字段的属性

public class CustomEditText extends EditText{

public CustomEditText(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

}

注意:我的意思是这样的属性        Edittext.setText( “演示”); 提前谢谢。

2 个答案:

答案 0 :(得分:3)


您需要在CustomEditText中创建成员变量和方法 一旦你拥有它们就可以访问它。

答案 1 :(得分:2)

所以有几种方法可以解释,我会尝试涵盖所有这些。

EditText有多个构造函数。您已覆盖的那个要求您作为开发人员在代码中为其余的此实例使用设置属性。所以你实际上可以从这个类中调用setText(someString),或者因为该方法是直接在你的类的实例上公开调用它。

如果覆盖包含attributeSet的构造函数,

 EditText(Context, AttributeSet)

您可以将组件用作xml布局的一部分,并在其上设置属性,就像它是另一个EditText一样(只要您调用super(context,attributeSet)。如果要在顶部定义自己的自定义属性那么你的表现实际上非常简洁。

在项目层次结构中,您应该拥有或需要创建名为“res / values”的文件夹。在该文件夹中,应创建名为attr.xml的文件。

<declare-styleable name="myCustomComponents">
<!-- Our Custom variable, optionally we can specify that it is of integer type -->
<attr name="myCustomAttribute" format="integer"/>
...
<!-- as many as you want -->
</declare-styleable>

现在在使用AttributeSet的新构造函数中,您可以读取这个新属性“myCustomAttribute”。

public CustomEditText(Context context, AttributeSet set) {
    super(context, set);
    // This parses the attributeSet and filters out to the stuff we care about
    TypedArray typedArray = context.obtainStyledAttributes(R.stylable.myCustomComponents);
    // Now we read let's say an int into our custom member variable.
    int attr = typedArray.getInt(R.styleable.myCustomComponents_myCustomAttribute, 0);
    // Make a public mutator so that others can set this attribute programatically
    setCustomAttribute(attr);
    // Remember to recycle the TypedArray (saved memory)
    typedArray.recycle();
}

现在我们已经声明了我们的新属性并且有设置代码来读取它,我们实际上可以以编程方式或XML布局使用它。所以假设你在文件中有一个Xml布局,layout.xml

<ViewGroup 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res/com.my.apk.package"
>

...

<com.my.full.apk.package.CustomEditText
   android:id="@+id/custom_edit"
   ...
   custom:myCustomAttribute="12"
/>
...
</ViewGroup>

因此,在此我们创建一个像普通的布局,但请注意我们声明了一个新的xml命名空间。这适用于您的新组件和apk。所以在这种情况下使用“自定义”它会在你定义的样式中查找新参数。通过使用attr.xml执行上述步骤,您已将“myCustomAttribute”声明为http://schemas.android.com/apk/res/com.my.apk.package命名空间之外的组件属性。在此之后,您可以决定要公开哪些属性以及这些属性的实际含义。希望有所帮助。