Sobes.tech
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()