2018-12-01 00:02:18 +01:00
|
|
|
package jp.juggler.util
|
|
|
|
|
|
|
|
import android.app.Activity
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.ContextWrapper
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import android.view.inputmethod.InputMethodManager
|
|
|
|
|
2018-12-04 10:59:01 +01:00
|
|
|
private val log = LogCategory("ViewUtils")
|
2018-12-01 00:02:18 +01:00
|
|
|
|
|
|
|
fun View?.scan(callback : (view : View) -> Unit) {
|
|
|
|
this ?: return
|
|
|
|
callback(this)
|
|
|
|
if(this is ViewGroup) {
|
|
|
|
for(i in 0 until this.childCount) {
|
|
|
|
this.getChildAt(i)?.scan(callback)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
val View?.activity : Activity?
|
|
|
|
get() {
|
|
|
|
var context = this?.context
|
|
|
|
while(context is ContextWrapper) {
|
|
|
|
if(context is Activity) return context
|
|
|
|
context = context.baseContext
|
|
|
|
}
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
|
|
|
|
fun View.hideKeyboard() {
|
|
|
|
try {
|
|
|
|
val imm = this.context?.getSystemService(Context.INPUT_METHOD_SERVICE)
|
|
|
|
if(imm is InputMethodManager) {
|
|
|
|
imm.hideSoftInputFromWindow(this.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
|
|
|
|
} else {
|
2018-12-04 10:59:01 +01:00
|
|
|
log.e("hideKeyboard: can't get InputMethodManager")
|
2018-12-01 00:02:18 +01:00
|
|
|
}
|
|
|
|
} catch(ex : Throwable) {
|
2018-12-04 10:59:01 +01:00
|
|
|
log.trace(ex)
|
2018-12-01 00:02:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fun View.showKeyboard() {
|
|
|
|
try {
|
|
|
|
val imm = this.context?.getSystemService(Context.INPUT_METHOD_SERVICE)
|
|
|
|
if(imm is InputMethodManager) {
|
|
|
|
imm.showSoftInput(this, InputMethodManager.HIDE_NOT_ALWAYS)
|
|
|
|
} else {
|
2018-12-04 10:59:01 +01:00
|
|
|
log.e("showKeyboard: can't get InputMethodManager")
|
2018-12-01 00:02:18 +01:00
|
|
|
}
|
|
|
|
} catch(ex : Throwable) {
|
2018-12-04 10:59:01 +01:00
|
|
|
log.trace(ex)
|
2018-12-01 00:02:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-02-03 15:12:03 +01:00
|
|
|
// set visibility VISIBLE or GONE
|
|
|
|
// return true if visible
|
2019-01-25 15:38:21 +01:00
|
|
|
fun vg(v : View, visible : Boolean) : Boolean {
|
2018-12-01 00:02:18 +01:00
|
|
|
v.visibility = if(visible) View.VISIBLE else View.GONE
|
2019-01-25 15:38:21 +01:00
|
|
|
return visible
|
2018-12-01 00:02:18 +01:00
|
|
|
}
|