Я застрял в функции «Если» и «Остальное» одного из моих приложений android - PullRequest
0 голосов
/ 28 апреля 2020

В моем приложении я получаю некоторые текстовые данные с сервера и показываю эти текстовые данные в TextView. Здесь что-то работает отлично. Я добавляю маленькую стрелку ImageView прямо к TextView, и этот TextView расширяем, поэтому, когда TextView больше 2 строк, и если кто-то щелкает по этому TextView, он расширяется и снова щелкает, чтобы уменьшить, и я также добавляю небольшое изображение стрелки прямо к TextView. (так что пользователь понимает, что это расширяемый текст), здесь все в порядке, весь код работает отлично, но теперь я хочу удалить это изображение стрелки сора, когда TextView меньше 2 строк, а TextView больше 2 строк, которые он показывает. Я хочу сказать вам еще одну вещь, что я также добавляю вращение в изображение стрелки, поэтому, когда пользователь щелкает текст, изображение маленькой стрелки поворачивается на 180 градусов, а также текст расширяется, а когда пользователь нажимает текст второй раз, изображение стрелки снова поверните его в предыдущую позицию, и текст будет сжат в 2 строки.

Я хочу удалить эту маленькую стрелку, когда текст меньше 2 лжи Я не хочу удалять изображение стрелки, когда текстовая строка больше 2, я Полагаю, вы понимаете.

Я новичок в коде Java и изучаю язык, поэтому теперь я хочу узнать, как реализовать эту реализацию в своем приложении, я добавил свой код ниже, чтобы Вы можете понять, что такое тест.

textViewMyVideoTitle.setText(videoLists.get(0).getVideo_title());
my_title_layout_expand.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
    if (isTextViewClicked) {
      //This will shrink textview to 2 lines if it is expanded.
      textViewMyVideoTitle.setText(videoLists.get(0).getVideo_title());
      myTitleImageView.setRotation(imageView.getRotation() + 0);
      myTitleImageView.setVisibility(View.VISIBLE);
      textViewMyVideoTitle.setMaxLines(2);
      isTextViewClicked = false;
    } else {
      //This will expand the textview if it is of 2 lines
      textViewMyVideoTitle.setText(videoLists.get(0).getVideo_title());
      myTitleImageView.setRotation(imageView.getRotation() - 180);
      myTitleImageView.setVisibility(View.VISIBLE);
      textViewMyVideoTitle.setMaxLines(Integer.MAX_VALUE);
      isTextViewClicked = true;
    }
  }
});

Так что любой может помочь мне получить этот код

enter image description here enter image description here

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Вы можете попытаться использовать метод TextView getLineCount(), чтобы получить эту информацию и принять решение. Таким образом, я имею в виду, что вне вашего onClickListener сделайте что-то вроде этого:

if (textViewMyVideoTitle.getLineCount() <= 2) {
        my_title_layout_expand.setVisibility(View.VISIBLE);
    } else {
        my_title_layout_expand.setVisibility(View.GONE);
    }

Или, поскольку оно дает вам правильный номер только после того, как макет был «отрендерен», вам может потребоваться следующее:

textViewMyVideoTitle.post(new Runnable() {
@Override
public void run() {
    // Get the line count and put the if-else statement here
}});
0 голосов
/ 28 апреля 2020

Как вы говорите, ваш текст не содержит более 2 строк, поэтому ваша функция не будет работать, пока текст не будет содержать более 2 строк.

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