特定のViewがセットされてからUIをさらに更新する方法
たまに使うので忘れないようにメモ
どういうこと?(使用例)
- 3行以上で省略されるTextViewの下部に、全文表示ボタンをつけたい
- 省略されない場合はボタンを非表示にしたい
- そのため、TextViewが表示されたタイミングで省略可能判定を行いたい。
結論
- ViewにRunnableを引数に持つメソッドが生えているので使える
- View.post(Runnable)
- View.postDelayed(Runnable, long)
- 無論UIスレッドの操作となるので多用は禁物。そもそもこういったものを使う仕様にしたくない。
- (参考) https://developer.android.com/guide/components/processes-and-threads?hl=ja#WorkerThreads
コード例
- ViewにRunnableを引数に持つメソッドが生えているので使える
- View.post(Runnable)
- View.postDelayed(Runnable, long)
- 無論UIスレッドの操作となるので多用は禁物。そもそもこういったものを使う仕様にしたくない。
- (参考) https://developer.android.com/guide/components/processes-and-threads?hl=ja#WorkerThreads
コード例
(DataBindingを使います)
// View#post()を使います
binding.textView.post {
binding.textView.layout?.let { layout ->
val ellipsisCount = layout.getEllipsisCount(MAX_LINES - 1)
if (ellipsisCount == 0) {
binding.moreButton.visibility = View.GONE
} else {
binding.moreButton.visibility = View.VISIBLE
}
}
Author And Source
この問題について(特定のViewがセットされてからUIをさらに更新する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/Royl/items/6349b8c1daa7b909512c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .