2017-05-30 6 views
0

Viewの幅に依存するいくつかのパラメータに応じて、サイズを変更する必要のあるレイアウトがあります。幅は "match_parent"に設定されています。私はそれがここに0を返すの幅を取得しようとするので、私はこれまで試してみましたです:Android RecyclerView:「match_parent」でのViewの幅/高さの取得

  1. mask.getWidth();
  2. mask.getLayoutParams().width
  3. ViewTreeObserver vto = mask.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mask.getViewTreeObserver().removeGlobalOnLayoutListener(this); int width = mask.getMeasuredWidth(); } });

は、だから私の質問は、私が入手できます方法ですこの状況での幅? ありがとうございます。

答えて

0

私の質問に答える解決策が見つかりましたが、まだ解決していない大きな問題があります。メソッドpost()を使用すると、すべてのViewにRunnableがメッセージキューに追加されます。

holder.button.post(new Runnable() { 
       @Override 
       public void run() { 
        width = holder.button.getWidth(); 
       } 
      }); 

ここでの問題は、このビューは以下のように測定されるまでRecyclerViewが待機していないということですがと:私は、ビューが完全に法で測定された後に何が起こることであることを理解ようにpost()私たちは、このように必要な寸法を得ることができます次の行に移動し、期待される尺度に従って行が更新されません。 この問題を解決する方法がある場合は、コメントを残してください。ありがとうございました。

関連する問題