0

いくつかのTextViewで構成されるLinearLayoutがあります。設定しました

android:gravity="center_horizontal"

親のレイアウトと結果は次のようになります(N = 2の場合)。

ここに画像の説明を入力してください

私はそれが次のように見えることを望みます

ここに画像の説明を入力してください

つまり、左揃えにしたいのです。より正確には、私の計画は、最長のTextViewを見つけてから、他のTextViewをそのビューの左境界に揃えることです。誰かが私のアクティビティのどのコールバックでそれを行うことができるかを説明できますか?私は試した

public void onCreate(Bundle savedInstanceState)

しかし

textView.getWidth()

(最長のTextViewを見つけるために使用します)すべてのtextViewに対して0を返します。2番目の質問は、TextViewの「n」ピクセルを左に移動するためにどのメソッドを使用する必要があるかということです。

4

1 に答える 1

1

うーん、あなたが望むものにたどり着く最も簡単な方法は、手動で行うのではなく、別のレイアウトに LinearLayout を埋め込むことです。

考えられるアプローチ:

RelativeLayout with gravity:center
  Linear Layout with gravity:left and wrap_content as size
    TextView1, wrap_content
    TextView2 
    ...

これでうまくいくはずです!

ところで、レイアウトで何かをしようとすると、onCreate をオーバーライドしてもうまくいきません! レイアウトは、描画フレームワークが 1 つの「onMeasure」サイクルと 1 つの「onLayout」サイクルを完了した後でのみ定義されます。それを確実にする (ハックな) 方法は、単純にそのコードを延期することです (たとえば、"View.postDelayed(..)" を使用します)。より良い方法は、カスタムの非表示の View を onCreate メソッドに追加することです。 onDraw が初めて呼び出された場合、少なくとも最初のレイアウト サイクルが完了していることを確認できます。その後、すべてのビューが実際のサイズを返す必要があります。

ビューの移動に関して: 「View.setOffset」を見ましたか?

于 2012-09-12T15:48:36.457 に答える