Вопрос задан 09.07.2023 в 00:58. Предмет Информатика. Спрашивает Tokarev Danil.

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

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Фёдорова Маша.

Ответ:

- 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>

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В данном коде метод onDraw для textView не вызывается явно. Однако, когда вы изменяете текст в textView и вызываете метод invalidate(), это приводит к перерисовке textView, что в итоге вызывает метод onDraw.

После нажатия на кнопку button, текст будет изменен на "Third text", так как последнее значение устанавливается в textView. Остальные строки с изменением текста ("First Text" и "Second text") не будут отображены, так как новые установки текста происходят последовательно, и последнее значение перезаписывает предыдущие.

Чтобы увидеть процесс изменения текста и вызов метода onDraw, вы можете добавить в класс textView кастомную реализацию, переопределяя метод onDraw, например:

kotlin
class 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().

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос