0

我想对齐两个TextView一个在HorizontalScrollView里面,并且都是LinerLayout的子项。getBaseline的TextView返回-1

当我试图呼叫 TextView里面的RecyclerView适配器onWindowAttached它总是返回-1。

是的,TextView父视图,LinerLayoutandroid:baselineAligned="true"


编辑:添加代码

布局

 <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