From 37714d62238efb754a689e6bbcadd8d8f934f704 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sun, 11 Jun 2017 13:25:16 -0700 Subject: Switch to ConstraintLayout --- .../kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt | 6 +- .../ca/allanwang/kau/kpref/items/KPrefCheckbox.kt | 5 +- .../ca/allanwang/kau/kpref/items/KPrefHeader.kt | 1 - .../ca/allanwang/kau/kpref/items/KPrefItemBase.kt | 12 ++-- .../ca/allanwang/kau/kpref/items/KPrefItemCore.kt | 14 ++-- library/src/main/res/layout/kau_preference.xml | 82 +++++++++++++--------- library/src/main/res/values/strings.xml | 1 + 7 files changed, 67 insertions(+), 54 deletions(-) (limited to 'library/src') diff --git a/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt b/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt index c441782..13407db 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt @@ -34,14 +34,14 @@ abstract class KPrefActivity : AppCompatActivity() { fun reload(vararg index: Int) { if (index.isEmpty()) adapter.notifyAdapterDataSetChanged() - else index.forEach { adapter.notifyItemChanged(it) } + else index.forEach { adapter.notifyItemChanged(it, null) } } - fun reloadByTitle(@StringRes vararg title:Int){ + fun reloadByTitle(@StringRes vararg title: Int) { if (title.isEmpty()) return adapter.adapterItems.forEachIndexed { index, item -> if (title.any { item.title == it }) - adapter.notifyItemChanged(index) + adapter.notifyItemChanged(index, null) } } diff --git a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefCheckbox.kt b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefCheckbox.kt index 75b480f..e09e245 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefCheckbox.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefCheckbox.kt @@ -33,9 +33,8 @@ class KPrefCheckbox(builder: KPrefAdapterBuilder, super.onPostBindView(viewHolder, textColor, accentColor) val checkbox = viewHolder.bindInnerView(R.layout.kau_preference_checkbox) if (accentColor != null) checkbox.tint(accentColor) - checkbox.isChecked = pref //Checkbox tick needs to be delayed since notifyDataSetChanged will cancel the animation - //It seems to work well here -// checkbox.jumpDrawablesToCurrentState() + checkbox.isChecked = pref + checkbox.jumpDrawablesToCurrentState() //Cancel the animation } override fun getType(): Int = R.id.kau_item_pref_checkbox diff --git a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefHeader.kt b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefHeader.kt index 0cd5901..94ef745 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefHeader.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefHeader.kt @@ -16,7 +16,6 @@ class KPrefHeader(builder: KPrefAdapterBuilder, @StringRes title: Int) : KPrefIt override fun getLayoutRes(): Int = R.layout.kau_preference_header override fun onPostBindView(viewHolder: ViewHolder, textColor: Int?, accentColor: Int?) { - viewHolder.itemView.isClickable = false if (accentColor != null) viewHolder.title.setTextColor(accentColor) } diff --git a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemBase.kt b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemBase.kt index 3c62b43..459166e 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemBase.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemBase.kt @@ -30,19 +30,17 @@ abstract class KPrefItemBase(builder: KPrefAdapterBuilder, @CallSuper override fun onPostBindView(viewHolder: ViewHolder, textColor: Int?, accentColor: Int?) { val enabled = enabler.invoke() - with(viewHolder){ - itemView.isEnabled = enabled - itemView.alpha = if (enabled) 1.0f else 0.3f - SL.d("Alpha ${itemView.isEnabled} ${itemView.alpha}") + with(viewHolder) { + container?.isEnabled = enabled + container?.alpha = if (enabled) 1.0f else 0.3f } } override fun unbindView(holder: ViewHolder) { super.unbindView(holder) with(holder) { -// itemView.isEnabled = true -// itemView.alpha = 1.0f - SL.d("Unset alpha ${itemView.isEnabled} ${itemView.alpha}") + container?.isEnabled = true + container?.alpha = 1.0f } } diff --git a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt index 169c716..2a03746 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt @@ -7,6 +7,7 @@ import android.support.annotation.StringRes import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView @@ -17,6 +18,7 @@ import ca.allanwang.kau.logging.SL import ca.allanwang.kau.utils.* import com.mikepenz.fastadapter.items.AbstractItem import com.mikepenz.iconics.typeface.IIcon +import java.util.* /** * Created by Allan Wang on 2017-06-05. @@ -34,7 +36,6 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, @CallSuper override fun bindView(viewHolder: ViewHolder, payloads: List) { super.bindView(viewHolder, payloads) - SL.d("BINDVIEW") with(viewHolder) { val context = itemView.context title.text = context.string(this@KPrefItemCore.title) @@ -42,10 +43,8 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, desc?.visible()?.setText(description) else desc?.gone() - if (iicon != null) { - iconFrame?.visible() - icon?.setIcon(iicon, 48) - } else iconFrame?.gone() + if (iicon != null) icon?.visible()?.setIcon(iicon, 48) + else icon?.gone() innerFrame?.removeAllViews() val textColor = builder.textColor?.invoke() if (textColor != null) { @@ -66,7 +65,6 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, override fun unbindView(holder: ViewHolder) { super.unbindView(holder) - SL.d("UNBINDVIEW") with(holder) { title.text = null desc?.text = null @@ -77,9 +75,9 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, class ViewHolder(v: View) : RecyclerView.ViewHolder(v) { val title: TextView by bindView(R.id.kau_pref_title) + val container: ViewGroup? by bindOptionalView(R.id.kau_pref_container) val desc: TextView? by bindOptionalView(R.id.kau_pref_desc) val icon: ImageView? by bindOptionalView(R.id.kau_pref_icon) - val iconFrame: LinearLayout? by bindOptionalView(R.id.kau_pref_icon_frame) val innerFrame: LinearLayout? by bindOptionalView(R.id.kau_pref_inner_frame) val innerContent: View? get() = itemView.findViewById(R.id.kau_pref_inner_content) @@ -93,6 +91,8 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, if (innerContent !is T) { innerFrame!!.removeAllViews() LayoutInflater.from(innerFrame!!.context).inflate(id, innerFrame) + } else { + SL.d("Inner view still attached") } return innerContent as T } diff --git a/library/src/main/res/layout/kau_preference.xml b/library/src/main/res/layout/kau_preference.xml index 265015a..5123b27 100644 --- a/library/src/main/res/layout/kau_preference.xml +++ b/library/src/main/res/layout/kau_preference.xml @@ -1,68 +1,84 @@ - + - + android:maxWidth="48dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.5" + tools:layout_editor_absoluteX="0dp" /> - + + app:layout_constraintBottom_toTopOf="@+id/kau_pref_desc" + app:layout_constraintEnd_toStartOf="@id/kau_pref_inner_frame" + app:layout_constraintHorizontal_bias="0" + app:layout_constraintStart_toEndOf="@id/kau_pref_icon" + app:layout_constraintTop_toTopOf="parent" + app:layout_goneMarginBottom="16dp" + tools:layout_editor_absoluteX="-175dp" /> - - + android:textColor="?android:attr/textColorSecondary" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/kau_pref_inner_frame" + app:layout_constraintHorizontal_bias="0" + app:layout_constraintStart_toEndOf="@id/kau_pref_icon" + app:layout_constraintTop_toBottomOf="@+id/kau_pref_title" + tools:layout_editor_absoluteX="-175dp" /> - + \ No newline at end of file diff --git a/library/src/main/res/values/strings.xml b/library/src/main/res/values/strings.xml index 10a73b9..ed939fa 100644 --- a/library/src/main/res/values/strings.xml +++ b/library/src/main/res/values/strings.xml @@ -14,4 +14,5 @@ Color Palette Title Placeholder + Pref Icon -- cgit v1.2.3