web-dev-qa-db-fra.com

Comment définir la visibilité dans Kotlin?

Je suis nouveau dans Kotlin . J'ai une vue que je dois afficher ou masquer de manière conditionnelle.
Comment puis-je faire cela à Kotlin?

En Java:

 public void showHide(View view){
        if (view.getVisibility() == View.VISIBLE) {
            view.setVisibility(View.INVISIBLE);
        } else {
            view.setVisibility(View.VISIBLE);
        }
    }
5
Epic Coder

En réponse à cette réponse, je pense qu'une méthode à la Kotlin pour accomplir cela peut également être écrite ainsi:

fun showHide(view:View) {
    view.visibility = if (view.visibility == View.VISIBLE){
        View.INVISIBLE
    } else{
        View.VISIBLE
    }
}
10
Faysal Ahmed

Vous pouvez le faire dans une fonction extension :

fun View.toggleVisibility() {
    if (visibility == View.VISIBLE) {
        visibility = View.INVISIBLE
    } else {
        visibility = View.VISIBLE
    }
}

Peut être utilisé comme ceci:

someView.toggleVisibility()
5
zsmb13

Vous pouvez convertir à l'aide d'Android Studio: Cliquez sur le fichier Java que vous souhaitez convertir, choisissez Code -> Convertir un fichier Java en fichier Kotlin et observez la magie .

fun showHide(view: View) {
        if (view.visibility == View.VISIBLE) {
            view.visibility = View.INVISIBLE
        } else {
            view.visibility = View.VISIBLE
        }
    }
4
Cao Minh Vu

Voici comment je gère la visibilité de la vue dans Kotlin. Ces méthodes peuvent être appelées sur n'importe quelle sous-classe de la classe View. Par exemple. LinearLayout, TextView etc.

VISIBLE/GONE:

// @BindingAdapter("visibleOrGone")
fun View.visibleOrGone(visible: Boolean) {
    visibility = if(visible) View.VISIBLE else View.GONE
}

VISIBLE/INVISIBLE:

// @BindingAdapter("visibleOrInvisible")
fun View.visibleOrInvisible(visible: Boolean) {
    visibility = if(visible) View.VISIBLE else View.INVISIBLE
}

Liaison de données: Retirez le commentaire @BindingAdapter si vous souhaitez également utiliser les méthodes ci-dessus avec databinding.

<FrameLayout
    app:visibleOrGone="@{viewModel.visibleView}"
    ...
    />

ou

<EditText
    app:visibleOrInvisible="@{viewModel.visibleView}"
    ...
    />

Ma classe ViewModel ressemble à ceci:

class LoginViewModel {
    val visibleView = ObservableBoolean()
}
1
Hemant Kaushik

Vous pouvez utiliser le code ci-dessous:

fun View.isVisible(): Boolean {
    return visibility == View.VISIBLE
}

Et:

fun View.setVisible(visible: Boolean) {
    visibility = if (visible) {
        View.VISIBLE
    } else {
        View.GONE
    }
}

Et vous pouvez utiliser:

if (text_view.isVisible()) {
    text_view.setVisible(false)
}
0
jo jo