私は、Android の android.widget.ImageView.setTop# メソッドの代替手段を探していました。これは、11 未満の API または Honeycomb で機能します。そのような代替手段はありますか?
2 に答える
ハニカム (API レベル 11) より下の場合は、setLayoutParams(...) を使用する必要があります。Android でビューの位置を動的に設定できます。たとえば、xml ファイルの LinearLayout に ImageView がある場合、LayoutParams を介してその位置を設定できます。
設定するコードは次のとおりです。
FrameLayout.LayoutParams layoutParams=new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(int left, int top, int right, int bottom);
imageView.setLayoutParams(layoutParams);
Android ドキュメントから: doc
親に対するこのビューの上部の位置を設定します。このメソッドは、レイアウト システムによって呼び出されることを意図しており、通常、それ以外の方法で呼び出すべきではありません。これは、プロパティがレイアウトによっていつでも変更される可能性があるためです。
このメソッドを直接呼び出すべきではありません。主な理由は、ViewGroup ごとにレイアウトに対するアプローチが異なり、このメソッドが一貫していない (フレームレイアウト) ためです。
@nitesh goel が提案したように、マージンまたはパディングを使用して、子ビューと ViewGroup 内の元の位置との間の間隔を設定します。文書
サイズ、パディング、およびマージン ビューのサイズは、幅と高さで表されます。ビューは実際には幅と高さの値のペアを 2 つ持っています。
最初のペアは、測定された幅と測定された高さとして知られています。これらの寸法は、ビューがその親内で必要とする大きさを定義します (詳細については、レイアウトを参照してください)。測定された寸法は、getMeasuredWidth() および getMeasuredHeight() を呼び出すことによって取得できます。
2 番目のペアは、単に幅と高さ、または描画幅と描画高さとして知られています。これらの寸法は、描画時およびレイアウト後の画面上のビューの実際のサイズを定義します。これらの値は、測定された幅と高さとは異なる場合がありますが、必ずしもそうである必要はありません。幅と高さは、getWidth() と getHeight() を呼び出すことで取得できます。
その寸法を測定するために、ビューはパディングを考慮します。パディングは、ビューの左、上、右、および下の部分のピクセルで表されます。パディングを使用して、ビューのコンテンツを特定のピクセル量だけオフセットできます。たとえば、左パディングを 2 にすると、ビューのコンテンツが左端から 2 ピクセル右に押し出されます。パディングは setPadding(int, int, int, int) または setPaddingRelative(int, int, int, int) メソッドを使用して設定でき、getPaddingLeft()、getPaddingTop()、getPaddingRight()、getPaddingBottom()、getPaddingStart( )、getPaddingEnd()。
ビューはパディングを定義できますが、マージンはサポートしていません。ただし、ビュー グループはそのようなサポートを提供します。詳細については、ViewGroup および ViewGroup.MarginLayoutParams を参照してください。