说明
通常我们做设置选项会是的布局文件很复杂,并且在Activity中需要控制的控件常多。如果包含类似ToggleButton的控件,我们还要对菜单项跟ToggleButton分开控制,代码会变得非常难看。而如果使用PreferenceActivity功能又较为单一。SettingItem这个控件是一个简易的菜单项。包含开关项,文字,箭头三种类型的菜单。
DEMO
特性
- 可以设置菜单项左侧图标,右侧箭头的大小,资源文件。如未设置,菜单内容将自动向左靠拢。
- 可以设置菜单内容文字,菜单右侧文字的颜色,大小等
- 可以设置显示ProgressBar
- 可以继承SettingItem实现更多类型菜单
- 可以显示文字或图片的错误提示
已知缺陷
- ToggleButton使用非安卓原生控件,需要依赖MaterialProgressBar
- 错误提示的图片无法设置大小
使用
在布局文件中添加
<!-- 开关菜单 -->
<com.salmonzhg.settingitemexample.views.SettingItem
android:id="@+id/settingItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:settingIcon="@drawable/ic_more_horiz_black_36dp"
app:settingTitleTextColor="@color/colorPrimaryDark"
app:settingTitle="For More Information"
android:minHeight="55dp"/>
<!-- 文字菜单 -->
<com.salmonzhg.settingitemexample.views.ToggleSettingItem
android:id="@+id/toggleSetting"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:settingIcon="@drawable/ic_directions_run_black_36dp"
app:settingTitle="Step Count"
app:settingTitleTextColor="@color/colorPrimaryDark"
android:minHeight="55dp"/>
<!-- 箭头菜单 -->
<com.salmonzhg.settingitemexample.views.TextSettingItem
android:id="@+id/textSetting"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:settingIcon="@drawable/ic_accessibility_red_50_36dp"
app:settingTitle="Heart Rate Measurement"
app:settingTitleTextColor="@color/colorPrimaryDark"
app:settingTextColor="@color/colorAccent"
android:minHeight="55dp"/>
可选设置
// 设置菜单右侧文字内容
textSettingItem.setRightText("85 bpm");
// 设置图片错误提示
textSettingItem.setError(true);
// 设置文字错误提示
toggleSettingItem.setTextError("Error", true);
// 设置震动(仅在progressing时才有效果,提示用户正在等待响应,无需重复操作)
toggleSettingItem.shake();
// 设置等待
toggleSettingItem.setProgressing(true);