Android切换button – 材质devise

我如何实现材料devise指南中指定的切换button

Androiddevise支持库开箱即用吗?还是有第三方库可用?

Solutions Collecting From Web of "Android切换button – 材质devise"

当前库支持:不

从Support Library v23.2开始,当前的ToggleButton实现不会像引用的Material Design Guidelines中所描述的那样运行,也不会被设置风格。

材料准则:

样品材料切换按钮

当前支持库样式:

当前支持库ToggleButton

请注意,这些button并不是以圆形边框包围的组合在一起,使用文本而不是图标,并且重音颜色被用作下划线而不是黑暗的背景来指示“开启”状态。

有没有外部库:还没有。

我不知道任何事实上的标准库来实现一个材质的ToggleButton,但可能有几个小的,几乎没有testing过的那里,我希望? 不幸的是,Stackoverflow阻止只是链接到外部第三方库的答案。 因此,您需要自行search,或者自行创build自定义视图以实现当前的材料devise指南。

我也在寻找像ToggleButtonBar相当一段时间。

材料准则: 样品材料切换按钮

我能够实现它滥用RadioButtons:

在这里输入图像说明

为了实现这个单选ButtonBar,我为单选button创build了一个ToggleButton样式,并创build了一个RadioGroup。

添加到你的res / values / styles.xml

 <style name="ToggleButton" parent="@android:style/Widget.CompoundButton.RadioButton"> <item name="android:foreground">?attr/selectableItemBackground</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">32dp</item> <item name="android:background">@drawable/toggle_background</item> <item name="android:button">@null</item> <item name="android:paddingLeft">8dp</item> <item name="android:textAllCaps">true</item> <item name="android:paddingRight">8dp</item> </style> 

对于背景ColorStateList创build一个res / drawable / toogle_background.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:state_window_focused="false"> <color android:color="@color/toggle_hover" /> </item> <item android:state_checked="false" android:state_window_focused="false"> <color android:color="@color/toggle_normal" /> </item> <item android:state_checked="true" android:state_pressed="true"> <color android:color="@color/toggle_active" /> </item> <item android:state_checked="false" android:state_pressed="true"> <color android:color="@color/toggle_active" /> </item> <item android:state_checked="true" android:state_focused="true"> <color android:color="@color/toggle_hover" /> </item> <item android:state_checked="false" android:state_focused="true"> <color android:color="@color/toggle_normal_off" /> </item> <item android:state_checked="false"> <color android:color="@color/toggle_normal" /> </item> <item android:state_checked="true"> <color android:color="@color/toggle_hover" /> </item> </selector> 

追加你的res / values / colors.xml

 <color name="toggle_hover">@color/gray</color> <color name="toggle_normal">@color/gainsboro</color> <color name="toggle_active">@color/silver</color> <color name="toggle_normal_off">@color/darkgray</color> <color name="gainsboro">#DCdCdC</color> <color name="silver">#C0C0C0</color> <color name="darkgray">#a9a9a9</color> <color name="gray">#808080</color> 

在你的布局文件中使用这个代码片段来创build一个材质切换button组。 在我的情况下,这是activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:gravity="center" android:orientation="vertical"> <android.support.v7.widget.CardView android:layout_width="wrap_content" android:layout_height="wrap_content" app:cardCornerRadius="2dp" app:cardElevation="2dp"> <RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton style="@style/ToggleButton" android:text="First" /> <RadioButton style="@style/ToggleButton" android:text="Second" /> <RadioButton style="@style/ToggleButton" android:text="Third" /> </RadioGroup> </android.support.v7.widget.CardView> </LinearLayout> 

我使用CardView作为组的包装来实现圆angular。 不幸的是,在低于棒棒糖的Android版本上,圆angular将导致CardView的填充。 您可以确定在这里使用其他颜色或图标代替文本或两者都使用自己的样式。 为这些情况创build你自己的状态列表。

切换button要求:

  • 组中至less有三个切换button
  • 标签button与文本,图标,或两者兼而有之

推荐以下组合:

  • 多个和未选中
  • 独占和未选中
  • 仅限专属

注意:要使用CardView,您需要将它的依赖项添加到您的应用程序build.gradle文件中:

 compile 'com.android.support:cardview-v7:25.0.1' 

我希望这可以帮助你!

http://takeoffandroid.com/android-views/material-toggle-switch-using-appcompat-v7/

import:

 import android.support.v7.widget.SwitchCompat; import android.widget.CompoundButton; swt = (SwitchCompat)findViewById(R.id.Switch); swt.setOnCheckedChangeListener (this); swt.setChecked (true); 

监听器:

 @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()) { case R.id.Switch: if(!isChecked){ Toast.makeText (SwitchActivity.this,"Err Switch is off!!",Toast.LENGTH_SHORT).show (); }else{ Toast.makeText (SwitchActivity.this,"Yes Switch is on!!",Toast.LENGTH_SHORT).show (); } break; default: break; } } 

XML:

 <android.support.v7.widget.SwitchCompat android:id="@+id/Switch" android:layout_width="match_parent" android:layout_height="wrap_content" android:textOff="" android:text="Toggle Switch" android:background="@android:color/transparent" android:textColor="@color/secondary_text" android:textOn="" android:button="@null" android:padding="20dp"/> 

我创build了一个符合Material Design指南的ToggleButton库:

https://github.com/rcketscientist/ToggleButtons

compile 'com.anthonymandra:ToggleButtons:2.0.0'

在这里输入图像说明

如果您的活动具有向后兼容性,则可以使用SwitchCompat。请参阅下面的示例。

 <android.support.v7.widget.SwitchCompat android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true"/> 

快乐编码:D