
Сколько раз и в какие моменты времени у 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