我在回收站查看了一个开关,从数据库检索数据后,数据显示在recyclerview中。 当回收站打开时,我读DB,如果DB中的一个字段是“Y”,我启用开关,否则我禁用开关。 现在的问题是与此同时onCheckedchanged侦听器也被称为,我想只有当用户手动设置开关时调用onCheckedChanged。 打开下面的回收站时执行: holder.enabledisable.setChecked(messengerRecord.get_is_valid().equalsIgnoreCase("Y")); ViewHolder类: public class viewHolder extends RecyclerView.ViewHolder implements CompoundButton.OnCheckedChangeListener{ public SwitchCompat enabledisable; public viewHolder(View v) { enabledisable = (SwitchCompat) v.findViewById(R.id.enabledisable); enabledisable.setOnCheckedChangeListener(this); …………………………….. …………………………….. 刚刚打开recyclerView时调用的OncheckedChanged方法: @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.v("ranjith","called oncheckedchanged"); MessengerRecord rec; rec = dbHelper.getRecord(descview.getText().toString()); switch (buttonView.getId()) { case R.id.enabledisable: if (isChecked) { rec.set_is_valid("Y"); dbHelper.updateRecord(rec); } } […]
Lollipop(5.0)中切换小部件的行为发生了变化。 <Switch android:id="@+id/switcher" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginBottom="16dp" android:layout_marginRight="8dp" android:layout_marginEnd="8dp" android:layout_toEndOf="@id/another_view" android:layout_toRightOf="@id/another_view" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:textOff="@string/disabled" android:textOn="@string/enabled" android:fontFamily="sans-serif-condensed" /> 当targetSdkVersion = 19时渲染开关: 当targetSdkVersion = 21时渲染开关: 请注意,Android Studio中的预览渲染仍然会产生一个带有文本的开关,但是在带有Lollipop(Nexus 5)的设备上运行带有targetSdkVersion = 21的apk的情况下,该开关会丢失文本。 在同一个棒棒糖设备上运行一个使用targetSdkVersion = 19构build的apk,可以按照预期正确地显示文本。 为什么? 任何build议的解决方法?
我正在寻找自定义Switchbutton成为如下: 如何做到这一点?
在API 14中引入的开关小部件的默认样式是全息主题。 我想略微改变它的风格,为了品牌的原因改变它的颜色和形状。 这个怎么办? 我知道这一定是可能的,因为我看到了默认的ICS和三星的touchwiz主题之间的区别 我假设我需要一些状态drawable,我已经看到了一些样式在http://developer.android.com/reference/android/R.styleable.html与Switch_thumb和Switch_track看起来像我可能会后。 我只是不知道如何去使用它们。 我使用ActionbarSherlock如果有所作为。 当然,只有运行API v14或更高版本的设备才能使用交换机。