Middle
Дар бораи усулҳое, ки View-ро дубора мекашанд, нақл кунед.
sobes.tech AI
Ҷавоб аз AI
វិធីសាស្រ្ត:
invalidate(): សម្គាល់ View ជា "ស្អុយ", ដែលត្រូវការការចាប់ផ្តើមបង្ហាញឡើងវិញ។ គ្រោងទុកអនុវត្តonDraw()នៅអនាគត។ ការចាប់ផ្តើមបង្ហាញឡើងវិញកើតឡើងនៅក្នុងខ្សែប្រព័ន្ធចម្បង។ ប្រើប្រាស់បើសម្បត្តិខាងក្រៅរបស់ View (ពណ៌, ផ្ទៃខាងក្រៅ និងផ្សេងៗ) មានការផ្លាស់ប្តូរ។postInvalidate(): ដូចជាinvalidate(), ប៉ុន្តែអាចហៅ ពីខ្សែប្រព័ន្ធណាមួយ បាន, មិនត្រឹមតែពីខ្សែប្រព័ន្ធចម្បងទេ។ មានសុវត្ថិភាពសម្រាប់ការប្រើប្រាស់នៅក្នុងខ្សែប្រព័ន្ធផ្ទៃខាងក្រោយ។requestLayout(): សម្គាល់ View ជា "មិនត្រឹមត្រូវ", ដែលត្រូវការការគណនាឡើងវិញនូវទំហំ និងទីតាំងរបស់វា។ គ្រោងទុកអនុវត្តonMeasure()និងonLayout(), បន្ទាប់មកonDraw()។ ប្រើប្រាស់បើទំហំ ឬទីតាំងរបស់ View មានការផ្លាស់ប្តូរ (ឧទាហរណ៍, នៅពេលបន្ថែម/លុបធាតុកូននៅក្នុងViewGroup)។
ការប្រៀបធៀបវិធីសាស្រ្ត:
| វិធីសាស្រ្ត | ខ្សែប្រព័ន្ធហៅ | ការគណនាឡើងវិញ layout | ការចាប់ផ្តើមបង្ហាញឡើងវិញ |
|---|---|---|---|
invalidate() |
ខ្សែប្រព័ន្ធ UI | មិនមែនទេ | បាទ/ចាស |
postInvalidate() |
ខ្សែប្រព័ន្ធណាមួយ | មិនមែនទេ | បាទ/ចាស |
requestLayout() |
ខ្សែប្រព័ន្ធ UI | មែន | បាទ/ចាស (បន្ទាប់ពី layout) |
ឧទាហរណ៍ប្រើ invalidate():
// ផ្លាស់ប្តូរពណ៌របស់ View និងស្នើសុំបង្ហាញឡើងវិញ
myView.setBackgroundColor(Color.RED)
myView.invalidate()
ឧទាហរណ៍ប្រើ requestLayout():
// បន្ថែមធាតុកូនទៅក្នុង LinearLayout និងស្នើសុំគណនាឡើងវិញនូវ layout និងបង្ហាញឡើងវិញ
val newTextView = TextView(context)
linearLayout.addView(newTextView)
linearLayout.requestLayout()