Android 搜索小部件的自定义布局
Android custom layout for search widget
我想在我的 Android 应用程序的操作栏中有一个搜索字段。使用默认设计我可以毫不费力地做到这一点。但我想为我的搜索栏添加附加的图像设计。有什么方法可以为我的搜索字段定制设计吗?
我想像左图一样,点击后变成右图,有一个简单的动画。
非常感谢
您可以通过创建 class 实现 TextWatcher 并创建您自己的布局来创建自定义 EditText,例如:
public class MyEditText extends LinearLayout implements TextWatcher {
private EditText editText;
public MyEditText(Context context) {
super(context);
initializeView(context, null);
}
...
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
public EditText getEditText() {
return editText;
}
private void initializeView(Context context, AttributeSet attrs) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.view_my_edittext, this, false);
editText = (EditText) view.findViewById(android.R.id.edit);
}
}
布局如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:focusable="false">
<EditText
android:id="@android:id/edit"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="@dimen/drawable_size"
android:layout_marginEnd="@dimen/drawable_size"
android:background="@null"
android:focusable="true" />
<TextView
android:id="@android:id/hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/logo"
android:focusable="false" />
</FrameLayout>
我想在我的 Android 应用程序的操作栏中有一个搜索字段。使用默认设计我可以毫不费力地做到这一点。但我想为我的搜索栏添加附加的图像设计。有什么方法可以为我的搜索字段定制设计吗?
我想像左图一样,点击后变成右图,有一个简单的动画。
非常感谢
您可以通过创建 class 实现 TextWatcher 并创建您自己的布局来创建自定义 EditText,例如:
public class MyEditText extends LinearLayout implements TextWatcher {
private EditText editText;
public MyEditText(Context context) {
super(context);
initializeView(context, null);
}
...
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
public EditText getEditText() {
return editText;
}
private void initializeView(Context context, AttributeSet attrs) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.view_my_edittext, this, false);
editText = (EditText) view.findViewById(android.R.id.edit);
}
}
布局如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:focusable="false">
<EditText
android:id="@android:id/edit"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="@dimen/drawable_size"
android:layout_marginEnd="@dimen/drawable_size"
android:background="@null"
android:focusable="true" />
<TextView
android:id="@android:id/hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/logo"
android:focusable="false" />
</FrameLayout>