2016-04-09 1 views
0

Не работает, я имею в виду, что я не вижу его в ViewHolder. getWidth() возвращает значение 0.0.Android: getlayoutParams(). Width возвращает -1, а getWidth() возвращает 0

Edit- Причина, по которой я не мог видеть, мнение о том, что первоначальный вызов, чтобы получить ширину возвращается 0.

У меня есть мнение, что в настоящее время используется, чтобы показать, как далеко через конкретный класс кто-то, устанавливается следующим образом:

  <View 
      android:id="@+id/timerBar" 
      android:layout_width="match_parent" 
      android:layout_height="4dp" 
      android:background="@color/colorPrimaryDark" /> 

в методе onBindViewHolder я делаю following-

в

Получение новую ширину и текущую раскладку

int width = (int) (holder.timerBar.getLayoutParams().width * ((float)time-start)/((float)end-start)); 
    RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) holder.timerBar.getLayoutParams(); 

Установка ширины макета и настройки макета view-

holder.timerBar.setLayoutParams(lp); 
holder.timerBar.requestLayout(); 

Calling requestLayout() было то, что, по-видимому вызвать представление для обновления, однако он не работает для меня ,

Может ли кто-нибудь предложить, как получить представление в окне просмотра recyclerview, чтобы изменить его ширину?

Спасибо за любую помощь.

ответ

2

Пожалуйста, не вручную устанавливайте параметры макета, если вы не знаете, что делаете. Измерение и компоновка объектов в режиме recyclerview отличается, так как это выполняется менеджером компоновки, и вы не должны мешать этому.

В вашем случае для отображения прогресса вы должны просто использовать ProgressBar и/или использовать вытяжку с вырезкой или другими средствами, чтобы показать прогресс (есть много различных вариантов).

Тогда вы можете просто позвонить progress.setProgress(50); и сделать это без вмешательства с вашей планировкой и видами.

+0

Спасибо, это был недосмотр с моей стороны. Это работает очень хорошо. –

 Смежные вопросы

  • Нет связанных вопросов^_^