提问人:Arshad Siddiqui 提问时间:9/7/2023 最后编辑:Arshad Siddiqui 更新时间:9/11/2023 访问量:48
如何在android studio Kotlin中创建像uc浏览器搜索栏工具栏一样的搜索栏?
How to create search bar like uc browser search bar toolbar in android studio Kotlin?
问:
它是主页上的 uc 浏览器工具栏,当用户单击主屏幕上的搜索 bara 时,它会展开左端用户欲望搜索引擎和右端取消按钮和搜索栏之间的麦克风当用户输入任何内容时,按钮 chage mic 按钮变为明文按钮,取消按钮变为搜索按钮,其他与以前相同,没有变化 当用户点击谷歌图片按钮时,搜索引擎列表显示,用户选择他要搜索查询的搜索引擎。在这个孔过程中,只有按钮在搜索栏中更改它们没有变化。 但是在我的 xml 文件中,任何用户都可以清楚地看到有三个工具栏相互传输。请anyon告诉我我能做什么?
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".fragment.HomeFragment">
<androidx.appcompat.widget.Toolbar
android:id="@+id/first_toolbar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/custom_design"
android:elevation="6dp"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints">
<LinearLayout
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:layout_editor_absoluteX="16dp">
<ImageButton
android:id="@+id/google"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_marginTop="0dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:contentDescription="@string/google_image"
android:focusable="true"
android:src="@drawable/google"
tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck,ImageContrastCheck" />
<TextView
android:id="@+id/search_input"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toStartOf="@id/mic"
android:layout_toEndOf="@id/google"
android:background="@android:color/transparent"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="@string/search_or_enter_url"
android:textColor="#494747"
android:textSize="18sp"
tools:ignore="ObsoleteLayoutParam" />
<ImageButton
android:id="@+id/mic"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_marginTop="0dp"
android:layout_marginEnd="2dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:contentDescription="@string/mic"
android:focusable="true"
android:src="@drawable/baseline_mic_24"
tools:ignore="TouchTargetSizeCheck" />
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
<androidx.appcompat.widget.Toolbar
android:id="@+id/second_toolbar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:elevation="6dp"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:menu="@menu/second_toolbar_menu"
tools:ignore="MissingConstraints">
<!-- This is the search bar layout -->
<LinearLayout
android:id="@+id/second_search_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="0dp"
android:orientation="horizontal"
tools:layout_editor_absoluteX="16dp">
<!-- Google Image -->
<ImageButton
android:id="@+id/second_google"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_marginTop="3dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/google_image"
android:src="@drawable/google"
tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck,ImageContrastCheck" />
<!-- EditText for input -->
<EditText
android:id="@+id/second_search_input"
android:layout_width="wrap_content"
android:layout_height="52dp"
android:layout_weight="1"
android:autofillHints="Enter Text or Search Url"
android:background="@android:color/transparent"
android:hint="Search or Enter URL"
android:imeOptions="actionSearch"
android:inputType="text"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:singleLine="true"
android:textColorHint="#494747"
tools:ignore="HardcodedText,VisualLintTextFieldSize" />
<!-- Mic / Cross Button -->
<ImageButton
android:id="@+id/second_mic"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_marginTop="3dp"
android:layout_marginBottom="10dp"
android:layout_toStartOf="@id/cancel_search"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/mic"
android:src="@drawable/baseline_mic_24"
tools:ignore="ObsoleteLayoutParam,TouchTargetSizeCheck" />
<!-- Divider divide between mic and textView -->
<View
android:id="@+id/divider"
android:layout_width="2dp"
android:layout_height="40dp"
android:layout_marginTop="6dp"
android:layout_toStartOf="@id/cancel_search"
android:layout_toEndOf="@id/mic"
android:background="?android:attr/listDivider"
android:outlineAmbientShadowColor="@color/black_light"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ObsoleteLayoutParam,UnusedAttribute" />
<!-- cancel search / search_Or_Go -->
<TextView
android:id="@+id/cancel_search"
android:layout_width="46dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="5dp"
android:layout_weight="1"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:text="@string/cancel"
android:textColor="#434141"
tools:ignore="ObsoleteLayoutParam,TextSizeCheck,TouchTargetSizeCheck" />
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
<androidx.appcompat.widget.Toolbar
android:id="@+id/third_toolbar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:elevation="6dp"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:menu="@menu/second_toolbar_menu"
tools:ignore="MissingConstraints">
<!-- This is the search bar layout -->
<LinearLayout
android:id="@+id/third_search_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="0dp">
<!-- Google Image -->
<ImageButton
android:id="@+id/third_google"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/google_image"
android:src="@drawable/google"
tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck,ImageContrastCheck" />
<!-- EditText for input -->
<EditText
android:id="@+id/third_search_input"
android:layout_width="wrap_content"
android:layout_height="52dp"
android:layout_weight="1"
android:autofillHints="Enter Text or Search Url"
android:background="@android:color/transparent"
android:hint="Search or Enter URL"
android:imeOptions="actionSearch"
android:inputType="text"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:singleLine="true"
android:textColor="#494747"
android:textColorHint="#494747"
tools:ignore="HardcodedText,VisualLintTextFieldSize" />
<!-- It's clear text in EditText for input -->
<ImageView
android:id="@+id/clear_text"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:backgroundTint="@color/black_light"
android:clickable="true"
android:contentDescription="TODO"
android:focusable="true"
android:src="@drawable/baseline_cancel_24"
tools:ignore="ContentDescription,HardcodedText,ObsoleteLayoutParam,TouchTargetSizeCheck" />
<View
android:id="@+id/second_divider"
android:layout_width="2dp"
android:layout_height="40dp"
android:layout_marginTop="6dp"
android:layout_toStartOf="@id/cancel_search"
android:layout_toEndOf="@id/search_Or_Go"
android:background="?android:attr/listDivider"
android:outlineAmbientShadowColor="@color/black_light"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ObsoleteLayoutParam,UnusedAttribute" />
<!-- when user click search_Or_Go button then it will go to search page using webview -->
<ImageView
android:id="@+id/search_Or_Go"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginTop="5.5dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:clickable="true"
android:contentDescription="TODO"
android:focusable="true"
android:src="@drawable/baseline_search_24"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription,HardcodedText,TouchTargetSizeCheck" />
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
</androidx.constraintlayout.widget.ConstraintLayout>
我希望我的搜索栏与 uc 搜索栏一样具有确切的行为。有人有什么建议吗?
答:
0赞
Rahul Rokade
9/9/2023
#1
请更改图标并使用此布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="5dp"
tools:context=".activity.NewActivity">
<ImageView
android:id="@+id/google"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_menu"
app:tint="@color/black"
android:layout_centerVertical="true"
android:layout_alignParentStart="true"
android:layout_gravity="start"
android:padding="5dp"/>
<EditText
android:id="@+id/edt_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/google"
android:layout_toStartOf="@id/box_one"
android:layout_marginHorizontal="2dp"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:inputType="text"
android:textSize="12sp"
android:textColor="@color/black"
android:hint="search here"/>
<LinearLayout
android:id="@+id/box_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:orientation="horizontal">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_menu"
app:tint="@color/black"
android:layout_marginEnd="5dp"
android:layout_gravity="center_vertical|center"
android:padding="5dp"/>
<View
android:layout_width="0.8dp"
android:layout_height="15dp"
android:layout_marginTop="5dp"
android:layout_marginHorizontal="1dp"
android:background="@color/black"/>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_menu"
android:layout_gravity="center_vertical|center"
app:tint="@color/black"
android:padding="5dp"/>
</LinearLayout>
评论
0赞
Arshad Siddiqui
9/10/2023
Rahul Brother:感谢您的回复,但我的整个问题是,当用户输入任何内容时,按钮会更改,麦克风按钮会更改为明文按钮,取消按钮会更改为搜索按钮,其他与之前相同,没有更改。我希望我的搜索栏行为与 UC 浏览器搜索栏相同。
0赞
Rahul Rokade
9/11/2023
请使用这个“addTextChangedListener”
0赞
Rahul Rokade
9/11/2023
#2
这是java代码,请用你这边,麦克风代码不可用
public class NewActivity extends AppCompatActivity {
private Context context;
private EditText edtSearch;
private ImageView imgMic, imgSearch, imgClose, imgGoogle;
private TextView txtCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
init();
}
private void init(){
context = this;
edtSearch = findViewById(R.id.edt_search);
imgMic = findViewById(R.id.img_mic);
imgGoogle = findViewById(R.id.img_google);
imgSearch = findViewById(R.id.img_search);
imgClose = findViewById(R.id.img_close);
txtCancel = findViewById(R.id.txt_cancel);
imgClose.setVisibility(View.GONE);
imgMic.setVisibility(View.VISIBLE);
imgSearch.setVisibility(View.VISIBLE);
txtCancel.setVisibility(View.GONE);
setOnClick();
}
private void setOnClick() {
imgClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imgMic.setVisibility(View.VISIBLE);
edtSearch.setText(" ");
imgSearch.setVisibility(View.VISIBLE);
txtCancel.setVisibility(View.GONE);
}
});
edtSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if (count == 0){
imgMic.setVisibility(View.VISIBLE);
}
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
imgClose.setVisibility(View.VISIBLE);
imgMic.setVisibility(View.GONE);
imgSearch.setVisibility(View.GONE);
txtCancel.setVisibility(View.VISIBLE);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}}
XML 代码
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="5dp"
tools:context=".activity.NewActivity">
<ImageView
android:id="@+id/img_google"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_menu"
app:tint="@color/black"
android:layout_centerVertical="true"
android:layout_alignParentStart="true"
android:layout_gravity="start"
android:padding="5dp"/>
<EditText
android:id="@+id/edt_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/img_google"
android:layout_toStartOf="@id/box_one"
android:layout_marginHorizontal="2dp"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:inputType="text"
android:textSize="12sp"
android:textColor="@color/black"
android:hint="search here"/>
<LinearLayout
android:id="@+id/box_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:orientation="horizontal">
<ImageView
android:id="@+id/img_close"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/img_close"
app:tint="@android:color/darker_gray"
android:layout_marginEnd="5dp"
android:layout_gravity="center_vertical|center"
android:padding="5dp"
android:visibility="gone"/>
<ImageView
android:id="@+id/img_mic"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/img_mic"
app:tint="@android:color/darker_gray"
android:layout_marginEnd="5dp"
android:layout_gravity="center_vertical|center"
android:padding="5dp"
android:visibility="gone"/>
<View
android:layout_width="0.8dp"
android:layout_height="15dp"
android:layout_marginTop="5dp"
android:layout_marginHorizontal="1dp"
android:background="@color/black"/>
<ImageView
android:id="@+id/img_search"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/img_search"
android:layout_gravity="center_vertical|center"
app:tint="@android:color/darker_gray"
android:padding="5dp"
android:visibility="gone"/>
<TextView
android:id="@+id/txt_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center"
android:gravity="center"
android:textColor="@android:color/darker_gray"
android:textSize="8sp"
android:text="Cancel"
android:padding="5dp"
android:visibility="gone"/>
</LinearLayout>
评论