0

Я пытаюсь выровнять два TextView, один находится внутри HorizontalScrollView, и оба являются дочерними пользователями LinerLayout.getBaseline of TextView возвращает -1

Когда я пытаюсь позвонить getBaseLine из TextView внутри onWindowAttached адаптера RecyclerView, он всегда возвращает -1.

Да, родительский вид TextView, LinerLayout имеет android:baselineAligned="true"


Edit: Добавление кода

Layout

 <LinearLayout 
      android:id="@+id/linearLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:paddingBottom="6dp" 
      android:paddingEnd="10dp" 
      android:baselineAligned="true" 
      android:paddingStart="10dp" 
      android:paddingTop="10dp"> 


      <TextView 
       android:id="@+id/outerTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 


       android:gravity="center_vertical" /> 

      <HorizontalScrollView 
       android:id="@+id/scrollView" 

       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 

       <TextView 
        android:id="@+id/inlineTextView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginStart="8dp" 

        /> 
      </HorizontalScrollView> 

     </LinearLayout> 

Код в RecyclerView Адаптер

@Override 
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) 
{ 
    super.onViewAttachedToWindow(holder); 
    if(holder instanceof MyHolder) 
    { 
     dostuff((MyHolder)holder); 
    } 
} 
private void dostuff(QACommentViewHolder holder) 
{ 
    int baseline = holder.outerTextView.getBaseline(); 

} 
+0

Оставьте свой код. – Sharj

+0

@Sharj См. Редактирование. – q126y

ответ

0

View не измеряется при вызове onViewAttachedToWindow, поэтому он возвращает -1.

Лучшим подходом было бы.

@Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) 
    { 
     . 
     . 
     . 
     viewHolder.itemView.post(new Runnable() 
       { 

        //put your code here