【发布时间】:2017-03-15 16:50:27
【问题描述】:
我对创建自定义 android 控件有一个非常基本的想法和经验。
我知道我可以创建一个自定义控件,它基本上是一个包含多个控件的布局,添加属性和任何我想要的逻辑。
但现在我需要一些不同的东西。我有一个应用程序,其中我所有的 EditText 元素下面都有一条灰色的水平线。
我知道这可以通过backgroundTint 实现,但这仅适用于 api 21 及更多版本。
因此,我不想在我使用的每个 EditText 元素下方添加这条灰线,而是想创建一个扩展 EditText 的自定义元素,但也有这条灰线。像这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="match_parent"
android:layout_height="1dp"
android:src="@drawable/gray_divider"/>
</LinearLayout>
在后面的代码中:
public class MyEditText extends LinearLayout {
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
Init();
}
private void Init() {
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.my_edit_text, this);
InitViews(view);
}
所以我的问题是:
为了让MyEditText 像EditText 一样运行,我必须为每个EditText 属性创建一个属性。我想这样做:
<MyEditText android:layout_width="match_parent"
android:layout_height="match_parent"
android:text_color="@android:color/white" />
无需在后面的代码中添加任何内容。这可能吗?
【问题讨论】:
标签: java android custom-controls