diff --git a/.gitignore b/.gitignore index 39b6783..8a7c6bf 100644 --- a/.gitignore +++ b/.gitignore @@ -34,13 +34,7 @@ captures/ # IntelliJ *.iml -.idea/workspace.xml -.idea/tasks.xml -.idea/gradle.xml -.idea/assetWizardSettings.xml -.idea/dictionaries -.idea/libraries -.idea/caches +.idea/* # Keystore files # Uncomment the following line if you do not want to check your keystore files in. diff --git a/README.md b/README.md index d5b6875..08dbf1c 100644 --- a/README.md +++ b/README.md @@ -75,10 +75,11 @@ stateLayout.content() stateLayout.loadingWithContent() // error/info -stateLayout.infoImage(R.drawable.ic_android_black_64dp) - .infoTitle("Ooops.... :(") - .infoMessage("Unexpected error occurred. Please refresh the page!") - .infoButton("Refresh", onStateLayoutListener) +stateLayout.InfoLayoutBuilder() + .infoImage(R.drawable.ic_android_black_64dp) + .infoTitle("Ooops.... :(") + .infoMessage("Unexpected error occurred. Please refresh the page!") + .infoButton("Refresh", onStateLayoutListener) // error/info stateLayout.info() ``` diff --git a/library/src/main/java/com/erkutaras/statelayout/StateLayout.kt b/library/src/main/java/com/erkutaras/statelayout/StateLayout.kt index e63e508..8018100 100644 --- a/library/src/main/java/com/erkutaras/statelayout/StateLayout.kt +++ b/library/src/main/java/com/erkutaras/statelayout/StateLayout.kt @@ -1,10 +1,9 @@ package com.erkutaras.statelayout import android.content.Context -import android.support.annotation.LayoutRes import android.util.AttributeSet -import android.view.LayoutInflater import android.view.View +import android.view.ViewStub import android.widget.Button import android.widget.FrameLayout import android.widget.ImageView @@ -15,13 +14,12 @@ import android.widget.TextView */ class StateLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, - defStyleAttr: Int = 0) - : FrameLayout(context, attrs, defStyleAttr) { + defStyleAttr: Int = 0) : FrameLayout(context, attrs, defStyleAttr) { private var contentLayout: View? = null - private var loadingLayout: View? = null - private var infoLayout: View? = null - private var loadingWithContentLayout: View? = null + private var loadingLayout: ViewStub? = null + private var infoLayout: ViewStub? = null + private var loadingWithContentLayout: ViewStub? = null private var state: State = State.CONTENT @@ -41,20 +39,17 @@ class StateLayout @JvmOverloads constructor(context: Context, } private fun setupLoadingState() { - loadingLayout = inflate(R.layout.layout_state_loading) - loadingLayout?.visibility = View.GONE + loadingLayout = ViewStub(context, R.layout.layout_state_loading) addView(loadingLayout) } private fun setupInfoState() { - infoLayout = inflate(R.layout.layout_state_info) - infoLayout?.visibility = View.GONE + infoLayout = ViewStub(context, R.layout.layout_state_info) addView(infoLayout) } private fun setupLoadingWithContentState() { - loadingWithContentLayout = inflate(R.layout.layout_state_loading_with_content) - loadingWithContentLayout?.visibility = View.GONE + loadingWithContentLayout = ViewStub(context, R.layout.layout_state_loading_with_content) addView(loadingWithContentLayout) } @@ -76,54 +71,6 @@ class StateLayout @JvmOverloads constructor(context: Context, return this } - fun infoImage(imageRes: Int): StateLayout { - infoLayout?.findViewById(R.id.imageView_state_layout_info)?.let { - it.setImageResource(imageRes) - it.visibility = View.VISIBLE - } - return info() - } - - fun infoTitle(title: String): StateLayout { - infoLayout?.findViewById(R.id.textView_state_layout_info_title)?.let { - it.text = title - it.visibility = View.VISIBLE - } - return info() - } - - fun infoMessage(message: String): StateLayout { - infoLayout?.findViewById(R.id.textView_state_layout_info_message)?.let { - it.text = message - it.visibility = View.VISIBLE - } - return info() - } - - fun infoButtonListener(onStateLayoutListener: OnStateLayoutListener?): StateLayout { - infoLayout?.findViewById