2012-08-30 16 views
15

私はandroid api8で作業しています。 私は画面上にビューを動的に配置/配置したいと思っています。 しかし、setXとsetYを使用するには、APIレベル11以上が必要です。 API 8でどのように使用することができますか? はあなたがLayoutParamsを使用してこれを行うことができますAndroid - view.setX()の使用とapiのsetY 8

答えて

29

を助けが必要です。 これらをアンドロイドインターフェイスのコンポーネントに追加して、境界と位置を設定することができます。

例は(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の種類は、あなたがそれらを追加したいchildviewの親に等しくなければなりませんのでご注意ください。 (LinearLayout.LayoutParamsLinearLayoutRelativeLayout.LayoutParamsRelativeLayoutなど)。

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

NOTE!座標値はピクセル単位です。それはあなたのインターフェイスのサイズを定義するためにDP値を使用するのがベストプラクティスだので、あなたはピクセルにDPを変換するために、コードのこの部分を使用することもできます。

aditionally
private int getPixels(int dipValue){ 
    Resources r = getResources(); 
    int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, r.getDisplayMetrics()); 
    return px; 
} 
+0

おかげレオンは、それは私があなたをneed.thankまさにです! – manojmore

+0

@manojmoreこれでデモコードを送ることができます。私はこれを試しましたが、結果を得られませんでした。何か間違っていると思います。 –

+0

はDPまたはピクセルのこれらの値ですか? –

0

ビューがGroupViewがある場合(レオンLucardieの答え)以上にしてたときにその画面外へ行くビューエッジを想定されている、あなたも入れてあります。

0

あなたはこのように、http://nineoldandroids.com/を使用して、レベル1からAPIのサポートを持つことができます

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

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

ViewPropertyAnimator.animate(view).translationYBy(-yourY).setDuration(0); 
関連する問題