データバインディングを使用して子ビューの幅を設定する方法。設定する値は動的で、親レイアウトの幅に依存します。androidデータバインディングparent_widthからlayout_widthを設定
<LinearLayout
android:id="@+id/barLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="@{model.usedBarWidthPercentage}"
android:layout_height="4dp"/>
</LinearLayout>
item_bar.xmlモデルは私にパーセンテージを与えることができます。例えば、パーセンテージが40%の場合、テキストレイアウトの幅は親レイアウトの40%にする必要があります。
私はデータバインディングアダプターを使用するアイデアは知っていますが、親レイアウトの幅でどのようにそれを行うのか分かりません。
@従っている、私は結合アダプタを使用する方法を知っています。しかし、私は親のレイアウトの幅を渡す方法を知らない。 – iori24
@ iori24あなたは 'Final ViewTreeObserver vto = binding.cd.getViewTreeObserver();)を使うことができます。 vto.addOnGlobalLayoutListener(新しいViewTreeObserver.OnGlobalLayoutListener(){ @Override公共ボイドonGlobalLayout(){ binding.cd.getViewTreeObserver()removeOnGlobalLayoutListener(この); INT幅= binding.cd.getMeasuredWidth(); INT height = binding.cd.getMeasuredHeight(); モデル。setMeasure(width); } }); ' – Raghunandan
@Raghunandan thanks bro – iori24