現在のプロジェクトでは、さまざまなView
がRelativeLayout
に配置されており、LayoutParams
が適用されています。あなたと同じように、ViewGroup
コンテナの右または下に到達するとViewsが「縮む」ことがわかりました。測定とレイアウトの段階で、View
が突然実際に欲しいサイズよりもはるかに小さいサイズを持つ必要があるとシステムが判断しようとしていることを考えれば、これは実際には起こりそうです極端に近くに置かれたときに親にフィットすることができる。
現時点でこれを回避するために行った非常に簡単な解決策は、画面サイズに対して私のViewGroup
を単にオーバーサイズすることです。
さらに、あなたはView
sがあるように設定されているView
オブジェクトの余白を防ぐために、いくつかのプログラムロジックを使用すると思います。その場合には、あなたが実際にView
sが部分的にオフスクリーン表示されないようにすることを決めるかもしれ親コンテナの境界から離れることを許可されています。
もう1つの解決方法は、View
を強制的に親のものよりも大きいサイズに強制するには、onMeasure()
などを上書きすることです。可能であれば、ビューをそこに希望のサイズエッジが重なる。それは私の頭の上からちょうどアイデアですが、それを調査していません。
findViewById(R.id.imageView).setOnTouchListener(new OnTouchListener()
{
int prevX,prevY;
@Override
public boolean onTouch(final View v,final MotionEvent event)
{
final FrameLayout.LayoutParams par=(FrameLayout.LayoutParams)v.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
par.topMargin+=(int)event.getRawY()-prevY;
prevY=(int)event.getRawY();
par.leftMargin+=(int)event.getRawX()-prevX;
prevX=(int)event.getRawX();
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_UP:
{
par.topMargin+=(int)event.getRawY()-prevY;
par.leftMargin+=(int)event.getRawX()-prevX;
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_DOWN:
{
prevX=(int)event.getRawX();
prevY=(int)event.getRawY();
par.bottomMargin=-2*v.getHeight();
par.rightMargin=-2*v.getWidth();
v.setLayoutParams(par);
return true;
}
}
return false;
}
});
@Trevorページ:拡張&任意の方法をovverrideの位置を限定しないする必要はありません: あなたは両方の世界を楽しんで解決策があると思います。ここ –