在Android开发时,常常会添加搜索框,有时更会高仿ios搜索控件,将搜索符号显示在搜索框的中间,当点击搜索框时,又将搜索按钮移到左侧。如下图演示(生成gif被压缩了)
先给搜索框添加布局
<RelativeLayout
android:id="@+id/relative_search"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_margin="10dp"
android:focusable="true"
android:background="@drawable/search_relative_bg"
android:focusableInTouchMode="true" >
<com.example.searchiconincenter.widget.EditTextWithClear
android:id="@+id/et_search"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:background="@null"
android:drawableLeft="@drawable/search_icon"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:hint="输入关键词"
android:imeOptions="actionSearch"
android:singleLine="true"
android:textSize="13sp" />
</RelativeLayout>
Activity中初始化搜索icon位置
search_et.post(new Runnable() {
public void run() {
RelativeLayout.LayoutParams lp_search_v = (RelativeLayout.LayoutParams) search_et
.getLayoutParams();
mEditTextSlidLen = (search_relative.getWidth() - search_et
.getWidth()) / 2;
lp_search_v.width = search_relative.getWidth();
search_et.setLayoutParams(lp_search_v);
search_et.setTranslationX(mEditTextSlidLen);
}
});
搜索icon左移
search_et.animate().setDuration(500).translationX(0).start();
搜索icon恢复居中
search_et.animate().setDuration(500)
.translationX(mEditTextSlidLen).start();
提供下载demo
注:demo中参考博文《Android之监听手机软键盘弹起与关闭》监听软键盘弹起与收缩,来实现搜索icon的移动。