15

私はアンドロイドapi8に取り組んでいます。ビューを画面上に動的に配置/配置したい。ただし、setX と setY を使用するには、API レベル 11 以降が必要です。API 8でどのように使用できますか、またはこれに代わるものはありますか? 助けが必要

4

3 に答える 3

30

を使用してこれを行うことができますLayoutParams。これらを Android インターフェイスのコンポーネントに追加して、境界と位置を設定できます。

例 (RelativeLayout の子ビューに LayoutParams を設定する)

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //The WRAP_CONTENT parameters can be replaced by an absolute width and height or the FILL_PARENT option)
params.leftMargin = 50; //Your X coordinate
params.topMargin = 60; //Your Y coordinate
childView.setLayoutParams(params);

LayoutParams のタイプは、追加先の子ビューの親と同じでなければならないことに注意してください。( LinearLayout.LayoutParamsfor a LinearLayoutRelativeLayout.LayoutParamsfor aRelativeLayoutなど)。

また、代わりに、項目が親コンテナーに追加されたときに Layoutparams を設定するためにchildView.setLayoutParams(params);使用することもできます。parentView.addView(childView,params);

ノート!座標の値はピクセル単位です。DP 値を使用してインターフェイス サイズを定義するのがベスト プラクティスであるため、次のコードを使用して dp をピクセルに変換できます。

private int getPixels(int dipValue){ 
     Resources r = getResources();
     int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue,   r.getDisplayMetrics());
     return px; 
}
于 2012-08-30T11:35:52.327 に答える
0

次のように、 http://nineoldandroids.com/を使用してレベル 1 から API をサポートできます。

ViewPropertyAnimator.animate(view).translationYBy(-yourY).setDuration(0);
于 2015-01-26T14:19:23.803 に答える
0

上記に加えて(レオン・ルカーディの答え)ビューがGroupViewであり、ビューの端が画面の外に出ると想定されている場合は、次も配置する必要があります:

params.rightMargin=currentRightMargin -yourX;
params.bottomMargin=currentBottomMargin -yourY;

ビューの内部レイアウト内の歪みを避けるため

于 2014-11-17T00:31:48.200 に答える