私はアンドロイドapi8に取り組んでいます。ビューを画面上に動的に配置/配置したい。ただし、setX と setY を使用するには、API レベル 11 以降が必要です。API 8でどのように使用できますか、またはこれに代わるものはありますか? 助けが必要
3 に答える
を使用してこれを行うことができます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.LayoutParams
for a LinearLayout
、RelativeLayout.LayoutParams
for 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;
}
次のように、 http://nineoldandroids.com/を使用してレベル 1 から API をサポートできます。
ViewPropertyAnimator.animate(view).translationYBy(-yourY).setDuration(0);
上記に加えて(レオン・ルカーディの答え)ビューがGroupViewであり、ビューの端が画面の外に出ると想定されている場合は、次も配置する必要があります:
params.rightMargin=currentRightMargin -yourX;
params.bottomMargin=currentBottomMargin -yourY;
ビューの内部レイアウト内の歪みを避けるため