Как добавить новый ImageView в ConstraintLayout в AsyncTask? - PullRequest
0 голосов
/ 05 августа 2020

в моем приложении пользователь нажимает кнопку, чтобы отправить свой ответ на сервер, используя asynctask, и я показываю изображение в зависимости от их ответа.

Вот код в onPostExecute ():

ConstraintLayout root = findViewById(R.id.root);
ImageView img = new ImageView(PlayActivity.this);
img.setId(R.id.answerImage);
img.setImageResource(R.drawable.correct_answer);
img.setAdjustViewBounds(true);
ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(
    ConstraintLayout.LayoutParams.WRAP_CONTENT, 
    ConstraintLayout.LayoutParams.WRAP_CONTENT
);
ConstraintSet cs = new ConstraintSet();
cs.connect(img.getId(), ConstraintSet.TOP, R.id.answerButton, ConstraintSet.BOTTOM, 32);
cs.applyTo(root);
img.setVisibility(ImageView.VISIBLE);
root.addView(img, params);
try {
    Thread.sleep(2000);
} catch(InterruptedException e) {
    Log.e("exception", e.getMessage());
}
root.removeView(img);

Идентификатор, который я использовал в setId, определен в ids. xml file.

Однако изображение просто не отображается. Я пробовал этот код без ConstraintSet / установив ширину и высоту на 100 в LayoutParams / используя setImageDrawable вместо setImageResource. Ничего не получилось.

Я использую картинку «Проверить» в студии android в качестве рисунка, если это имеет значение.

1 Ответ

0 голосов
/ 07 августа 2020

Использование addView () ДЕЙСТВИТЕЛЬНО работает. Я использовал Thread.sleep (), чтобы показать изображение в течение двух секунд, прежде чем удалить его с помощью removeView (), но, по-видимому, removeView () выполняется немедленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...