1

レイアウト内の行数に応じて、線形レイアウトで行のサイズを変更しようとしています(レイアウトの高さは固定されています)。行は常に親レイアウトを完全に埋めることになっています。したがって、1行は親のフルサイズ、2行は両方とも半分のサイズなどです。これは機能します。テキストのサイズも変更しようとしていますが、テキストビューが明らかに大きいにもかかわらず、サイズを変更すると途切れてしまいます。十分です(ジェリービーンズの表示境界機能をオンにしました)

private void setHeightOfRows(ViewGroup parent) {
    int height = parent.getHeight();
    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        LinearLayout.LayoutParams p = (LayoutParams) parent.getChildAt(i).getLayoutParams();
        p.height = height / childCount;
        parent.getChildAt(i).setLayoutParams(p);
        ((ViewGroup) parent.getChildAt(i)).setClipChildren(false);
        Log.i("FontSize", "Set font size to " + 10 / childCount);
        ((TextView) parent.getChildAt(i).findViewById(R.id.name_text)).setTextScaleX(10 / childCount);// .setTextSize(10/childCount);
    }
}

このメソッドはViewTreeObserverで実行されるため、UIがレンダリングされた後です。

テキストを切り取らずにサイズを変更するにはどうすればよいですか?

4

2 に答える 2

1

単純な問題。単純な解決策が存在する必要があります。:)

  • android:paddingとの使用を検討しましたかandroid:margin
  • minHeaightとminWidthはどうですか?

また

  • コードでやっているのsetPaddingなら、Marginにも同様のことがあるはずです。
  • とがありsetMinHeightますsetMinWidth
于 2013-02-14T20:28:58.640 に答える
1

SetTextScaleX は、X 方向 (水平方向) にテキストを引き伸ばします。テキストを縮小して、上から下に小さくしたいように見えますよね?その場合、setTextScaleX は必要なく、setTextSize が必要です。

于 2013-02-14T20:09:37.807 に答える