Android SearchView 在提示图标后更改光标位置
Android SearchView change cursor position after hint icon
我正在使用 android.support.v7.widget.SearchView 提示图标位于光标左侧,如图所示。
但我想让光标在提示搜索图标之后开始。
XML:
<android.support.v7.widget.SearchView
android:id="@+id/airlines_searchView"
android:iconifiedByDefault="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:onClick="EnableSearchView"
android:background="#fbf7f7"
/>
我得到搜索视图的 EditText 如下:
EditText search_text=(EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
而且我不知道需要设置哪些属性。
我检查了 That 但没有找到解决方案,请帮忙?
必须将 android:iconifiedByDefault
更改为 app:iconifiedByDefault
并添加这两行以避免在启动 activity 时启动键盘,它仅在单击搜索视图后显示
android:focusable="false"
android:focusableInTouchMode="true"
所以试试这个:
<android.support.v7.widget.SearchView
android:id="@+id/airlines_searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:textStyle="normal"
android:layout_marginTop="15dp"
android:background="#fbf7f7"
android:focusable="false"
android:focusableInTouchMode="true"
app:iconifiedByDefault="false"/>
将默认图标化的搜索视图设置为点击时为 false,关闭搜索视图时为 true
searchView.setOnSearchClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
searchView.setIconifiedByDefault( false );
}
} );
searchView.setOnQueryTextListener( new android.support.v7.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//do search
}
@Override
public boolean onQueryTextChange(String newText) {
//do search
}
} );
searchView.setOnCloseListener( new android.support.v7.widget.SearchView.OnCloseListener() {
@Override
public boolean onClose() {
searchView.setIconifiedByDefault( true );
}
} );
<android.support.v7.widget.SearchView
android:id="@+id/airlines_searchView"
app:iconifiedByDefault="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="#fbf7f7"
/>
而不是 android:iconifiedByDefault="false" 设置 app:iconifiedByDefault="false"
我正在使用 android.support.v7.widget.SearchView 提示图标位于光标左侧,如图所示。
但我想让光标在提示搜索图标之后开始。
XML:
<android.support.v7.widget.SearchView
android:id="@+id/airlines_searchView"
android:iconifiedByDefault="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:onClick="EnableSearchView"
android:background="#fbf7f7"
/>
我得到搜索视图的 EditText 如下:
EditText search_text=(EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
而且我不知道需要设置哪些属性。
我检查了 That 但没有找到解决方案,请帮忙?
必须将 android:iconifiedByDefault
更改为 app:iconifiedByDefault
并添加这两行以避免在启动 activity 时启动键盘,它仅在单击搜索视图后显示
android:focusable="false"
android:focusableInTouchMode="true"
所以试试这个:
<android.support.v7.widget.SearchView
android:id="@+id/airlines_searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:textStyle="normal"
android:layout_marginTop="15dp"
android:background="#fbf7f7"
android:focusable="false"
android:focusableInTouchMode="true"
app:iconifiedByDefault="false"/>
将默认图标化的搜索视图设置为点击时为 false,关闭搜索视图时为 true
searchView.setOnSearchClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
searchView.setIconifiedByDefault( false );
}
} );
searchView.setOnQueryTextListener( new android.support.v7.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//do search
}
@Override
public boolean onQueryTextChange(String newText) {
//do search
}
} );
searchView.setOnCloseListener( new android.support.v7.widget.SearchView.OnCloseListener() {
@Override
public boolean onClose() {
searchView.setIconifiedByDefault( true );
}
} );
<android.support.v7.widget.SearchView
android:id="@+id/airlines_searchView"
app:iconifiedByDefault="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="#fbf7f7"
/>
而不是 android:iconifiedByDefault="false" 设置 app:iconifiedByDefault="false"