Сколько раз и в какие моменты времени у textView вызовется метод onDraw после нажатия на кнопку
button? Какой текст будет отображен? class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) button.setOnClickListener { view -> textView.text = "First Text" textView.invalidate() textView.text = "Second text" textView.invalidate() textView.text = "Third text" } }}Ответы на вопрос
Ответ:
- DrinkActivity.java
TextView t ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drink);
t = (TextView)findViewById(R.id.TextView01);
t.setOnClickListener((android.view.View.OnClickListener) this);
}
public void onClick(View arg0) {
t.setText("My text on click");
}
- activity_drink.xml
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
<ListView
android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
</ListView>
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
<TextView android:text="This is my first text"
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:textStyle="bold"
android:textSize="28sp"
android:editable="true"
android:clickable="true"
android:layout_height="wrap_content"
android:onClick="onClick">
</TextView>
Объяснение:
В данном коде метод onDraw для textView не вызывается явно. Однако, когда вы изменяете текст в textView и вызываете метод invalidate(), это приводит к перерисовке textView, что в итоге вызывает метод onDraw.
После нажатия на кнопку button, текст будет изменен на "Third text", так как последнее значение устанавливается в textView. Остальные строки с изменением текста ("First Text" и "Second text") не будут отображены, так как новые установки текста происходят последовательно, и последнее значение перезаписывает предыдущие.
Чтобы увидеть процесс изменения текста и вызов метода onDraw, вы можете добавить в класс textView кастомную реализацию, переопределяя метод onDraw, например:
kotlinclass MyTextView(context: Context, attrs: AttributeSet) : androidx.appcompat.widget.AppCompatTextView(context, attrs) {
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
// Дополнительные операции при перерисовке textView
}
}
А в макете XML замените:
xml<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textView"
...
/>
на:
xml<com.example.yourpackage.MyTextView
android:id="@+id/textView"
...
/>
Таким образом, вы сможете видеть, как вызывается метод onDraw при изменении текста в textView и последующем вызове invalidate().
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
