0

TextView やその他のウィジェットを含むカスタム レイアウトがあります。TextView には XML 属性 android:layout_height="" があります。

問題は、layout_height が無視され、wrap_content として扱われることです。

子ビューは独自の layout_width & layout_height パラメータを処理することになっていると思いました。カスタム レイアウトの onMeasure() で何かをする必要がありますか、それとも別の場所に問題がありますか?

ありがとう。

4

1 に答える 1

0

どうやら、layout_width および layout_height パラメーターは、TextView ではなく、コンテナーによって処理される必要があります。したがって、このような小さなコードでうまくいくようです (この例では高さの計算を示しているだけです)。

for (int i = 0, count = getChildCount();  i < count;  i++)
{
  View child = getChildAt(i);
  ViewGroup.LayoutParams params = child.getLayoutParams();

  int heightSpec;
  if (params.height == ViewGroup.LayoutParams.MATCH_PARENT)
    heightSpec = heightMeasureSpec;
  else if (params.height == ViewGroup.LayoutParams.WRAP_CONTENT)
    heightSpec = MeasureSpec.makeMeasureSpec (Integer.MAX_VALUE, MeasureSpec.UNSPECIFIED);
  else
    heightSpec = MeasureSpec.makeMeasureSpec (params.height, MeasureSpec.EXACTLY);

  child.measure (widthSpec, heightSpec);
}
于 2015-06-03T22:08:58.973 に答える