There is no ic_menu_refresh icon in android:drawable?

本文指导您如何从指定网站下载XML文件,并将其应用于Android应用的菜单刷新图标。

Android icon

You can download xml file from : download

Then use the ic_menu_refresh.xml file instead.

<androidx.coordinatorlayout.widget.CoordinatorLayout 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:id="@+id/coordinator_bottom_sheet" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/tpds_transparent" app:layout_constraintBottom_toBottomOf="parent"> <com.tplink.design.card.TPConstraintCardView android:id="@+id/btn_refresh" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top|start" android:layout_margin="@dimen/tpds_all_dp_16" android:translationY="-16dp" app:cardCornerRadius="@dimen/tpds_all_dp_90" app:layout_anchor="@id/btn_zoom"> <ImageView android:id="@+id/iv_refresh" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/tpds_all_dp_8" android:src="@drawable/mp_ad_svg_icon_refresh" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <com.tplink.design.indicator.TPLoadingIndicator android:id="@+id/loading_view" android:layout_width="0dp" android:visibility="gone" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="@id/iv_refresh" app:layout_constraintEnd_toEndOf="@id/iv_refresh" app:layout_constraintStart_toStartOf="@id/iv_refresh" app:layout_constraintTop_toTopOf="@id/iv_refresh" /> </com.tplink.design.card.TPConstraintCardView> <com.tplink.design.card.TPConstraintCardView android:id="@+id/btn_zoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|top" android:layout_margin="@dimen/tpds_all_dp_16" app:cardCornerRadius="@dimen/tpds_all_dp_90" app:layout_anchor="@id/cl_bottom_sheet"> <ImageView android:id="@+id/iv_zoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/tpds_all_dp_8" android:src="@drawable/mp_ad_svg_nav_zoom_24" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </com.tplink.design.card.TPConstraintCardView> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cl_bottom_sheet" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/tpds_transparent" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> <com.tplink.design.card.TPConstraintCardView android:id="@+id/cv_room_card" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginHorizontal="@dimen/tpds_all_dp_18" android:layout_marginTop="@dimen/tpds_all_dp_16" android:background="@color/tpds_white"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cl_headline" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="@dimen/tpds_all_dp_18"> <ImageView android:id="@+id/iv_cancel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="@dimen/tpds_all_dp_16" android:layout_marginEnd="@dimen/tpds_all_dp_16" android:src="@drawable/mp_ad_svg_icon_close_grey_16dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/tv_conclusion" style="@style/TextAppearance.TPDesign.Body1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/tpds_all_dp_16" android:layout_marginTop="@dimen/tpds_all_dp_16" android:text="@string/mp_ad_heatmap_homepage_room_report_title_well" app:layout_constraintEnd_toStartOf="@id/iv_cancel" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> <com.tplink.design.card.TPConstraintCardView android:id="@+id/card_weak_area" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/tpds_all_dp_16" android:layout_marginTop="@dimen/tpds_all_dp_16" android:layout_marginEnd="@dimen/tpds_all_dp_6" android:layout_marginBottom="@dimen/tpds_all_dp_16" app:cardBackgroundColor="@color/tpds_gray_light" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@id/card_avg_signal" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/cl_headline"> <TextView android:id="@+id/tv_weak_area" style="@style/TextAppearance.TPDesign.Caption" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/tpds_all_dp_16" android:layout_marginTop="@dimen/tpds_all_dp_16" android:text="@string/mp_ad_heatmap_homepage_room_report_signal_area" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/tv_weak_area_num" style="@style/TextAppearance.TPDesign.Headline6" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/tpds_all_dp_16" android:layout_marginTop="@dimen/tpds_all_dp_10" android:layout_marginBottom="@dimen/tpds_all_dp_16" android:text="@string/mp_ad_heatmap_homepage_room_report_signal_area_num" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_weak_area" /> </com.tplink.design.card.TPConstraintCardView> <com.tplink.design.card.TPConstraintCardView android:id="@+id/card_avg_signal" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/tpds_all_dp_6" android:layout_marginTop="@dimen/tpds_all_dp_16" android:layout_marginEnd="@dimen/tpds_all_dp_16" android:layout_marginBottom="@dimen/tpds_all_dp_16" app:cardBackgroundColor="@color/tpds_gray_light" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/card_weak_area" app:layout_constraintTop_toBottomOf="@id/cl_headline"> <TextView android:id="@+id/tv_avg_signal" style="@style/TextAppearance.TPDesign.Caption" android:singleLine="true" android:maxLines="1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/tpds_all_dp_16" android:layout_marginTop="@dimen/tpds_all_dp_16" android:text="@string/mp_ad_heatmap_homepage_room_report_avg_strength" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/tv_avg_signal_num" style="@style/TextAppearance.TPDesign.Headline6" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/tpds_all_dp_16" android:layout_marginTop="@dimen/tpds_all_dp_10" android:layout_marginBottom="@dimen/tpds_all_dp_16" android:text="@string/mp_ad_heatmap_homepage_room_report_avg_strength_num" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_avg_signal" /> </com.tplink.design.card.TPConstraintCardView> </com.tplink.design.card.TPConstraintCardView> <ImageView android:id="@+id/iv_bottom_sheet_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/mp_ad_svg_fold_icon" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <com.tplink.design.card.TPConstraintCardView android:id="@+id/cl_scroll_start_and_end" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="@dimen/tpds_all_dp_16" app:layout_constraintCircleRadius="@dimen/tpds_all_dp_16" app:cardCornerRadius="@dimen/tpds_all_dp_16" app:layout_constraintTop_toBottomOf="@id/iv_bottom_sheet_indicator" > <androidx.core.widget.NestedScrollView android:id="@+id/scroll_start_and_end" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <com.tplink.design.card.TPConstraintCardView android:layout_width="match_parent" android:layout_height="wrap_content" app:cardBackgroundColor="@color/tpds_gray_light" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/included_report_overview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/tpds_all_dp_16" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" >我希望在上滑到顶部的时候,刷新和zoom按钮能隐藏在cl_scroll_start_and_end背后,怎么弄,现在是会在cl_scroll_start_and_end的上面
10-25
要实现上滑 `BottomSheet` 到顶部时,将刷新和 `zoom` 按钮隐藏在 `cl_scroll_start_and_end` 背后,可以通过以下步骤实现: ### 1. 调整布局层次 确保 `cl_scroll_start_and_end` 在布局中处于比刷新和 `zoom` 按钮更上层的位置,这样才能覆盖按钮。在 `CoordinatorLayout` 中,后添加的视图会覆盖前面的视图。所以将 `cl_scroll_start_and_end` 放在刷新和 `zoom` 按钮之后。 ### 2. 监听 `BottomSheet` 的滑动状态 使用 `BottomSheetBehavior` 的 `addBottomSheetCallback` 方法监听 `BottomSheet` 的滑动状态,根据滑动偏移量来控制按钮的显示和隐藏。 以下是一个示例代码: ```xml <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 刷新按钮 --> <com.tplink.design.card.TPConstraintCardView android:id="@+id/btn_refresh" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top|start" android:layout_margin="@dimen/tpds_all_dp_16" android:translationY="-16dp" app:cardCornerRadius="@dimen/tpds_all_dp_90"> <ImageView android:id="@+id/iv_refresh" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/tpds_all_dp_8" android:src="@drawable/mp_ad_svg_icon_refresh" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <com.tplink.design.indicator.TPLoadingIndicator android:id="@+id/loading_view" android:layout_width="0dp" android:visibility="gone" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="@id/iv_refresh" app:layout_constraintEnd_toEndOf="@id/iv_refresh" app:layout_constraintStart_toStartOf="@id/iv_refresh" app:layout_constraintTop_toTopOf="@id/iv_refresh" /> </com.tplink.design.card.TPConstraintCardView> <!-- zoom 按钮 --> <com.tplink.design.card.TPConstraintCardView android:id="@+id/btn_zoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|top" android:layout_margin="@dimen/tpds_all_dp_16" app:cardCornerRadius="@dimen/tpds_all_dp_90"> <ImageView android:id="@+id/iv_zoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/tpds_all_dp_8" android:src="@drawable/mp_ad_svg_nav_zoom_24" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </com.tplink.design.card.TPConstraintCardView> <!-- BottomSheet --> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cl_bottom_sheet" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/tpds_transparent" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> <!-- cl_scroll_start_and_end --> <com.tplink.design.card.TPConstraintCardView android:id="@+id/cl_scroll_start_and_end" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="@dimen/tpds_all_dp_16" app:layout_constraintCircleRadius="@dimen/tpds_all_dp_16" app:cardCornerRadius="@dimen/tpds_all_dp_16" app:layout_constraintTop_toBottomOf="@id/iv_bottom_sheet_indicator"> <androidx.core.widget.NestedScrollView android:id="@+id/scroll_start_and_end" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <com.tplink.design.card.TPConstraintCardView android:layout_width="match_parent" android:layout_height="wrap_content" app:cardBackgroundColor="@color/tpds_gray_light" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <!-- 这里可以添加其他内容 --> </com.tplink.design.card.TPConstraintCardView> </androidx.core.widget.NestedScrollView> </com.tplink.design.card.TPConstraintCardView> <!-- 其他内容 --> <ImageView android:id="@+id/iv_bottom_sheet_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/mp_ad_svg_fold_icon" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout> ``` ```kotlin import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import com.google.android.material.bottomsheet.BottomSheetBehavior class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val bottomSheet = findViewById<View>(R.id.cl_bottom_sheet) val btnRefresh = findViewById<View>(R.id.btn_refresh) val btnZoom = findViewById<View>(R.id.btn_zoom) val bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet) bottomSheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { override fun onStateChanged(bottomSheet: View, newState: Int) { // 状态改变时的处理 } override fun onSlide(bottomSheet: View, slideOffset: Float) { // 当滑动到接近顶部时,隐藏按钮 if (slideOffset > 0.9) { btnRefresh.visibility = View.GONE btnZoom.visibility = View.GONE } else { btnRefresh.visibility = View.VISIBLE btnZoom.visibility = View.VISIBLE } } }) } } ``` ### 代码解释 - **布局文件**:确保 `cl_scroll_start_and_end` 在刷新和 `zoom` 按钮之后,这样 `cl_scroll_start_and_end` 会覆盖在按钮之上。 - **活动文件**:使用 `BottomSheetBehavior` 监听 `BottomSheet` 的滑动状态,当滑动偏移量大于 0.9 时,隐藏刷新和 `zoom` 按钮;否则显示按钮。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值