相対レイアウト( )の中央にある可動ボタンを膨らませてContainer
、タッチすると画面内Container
で移動できるようにしたいと思います。
コードは次のとおりです。
public void inflate_floating_btn(int k)
{
floatButton = new Button(this);
floatButton.setId(k);
floatButton.setTag(k);
final int id_ = floatButton.getId();
floatButton.setEnabled(true);
floatButton.setText("hello");
floatButton.setTextColor(Color.BLACK);
floatButton.setBackgroundResource(R.drawable.transparent_btn);
RelativeLayout.LayoutParams testLP = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
testLP.addRule(RelativeLayout.CENTER_IN_PARENT);
floatButton.setLayoutParams(testLP);
Container.addView(floatButton);
floatButton.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent e)
{
final int X = (int) e.getRawX();
final int Y = (int) e.getRawY();
switch(e.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
_xDelta = X - lParams.leftMargin;
_yDelta = Y - lParams.topMargin;
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
layoutParams.leftMargin = Math.max((X - _xDelta), 0);
layoutParams.topMargin = Math.max((Y - _yDelta),0);
layoutParams.rightMargin = 0;
layoutParams.bottomMargin = 0;
v.setLayoutParams(layoutParams);
break;
}
Container.invalidate();
return false;
}
});
}
ボタンは画面中央で膨らませることができます。ただし、触っても動かない。
交換する場合
RelativeLayout.LayoutParams testLP = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
testLP.addRule(RelativeLayout.CENTER_IN_PARENT);
floatButton.setLayoutParams(testLP);
に
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(1, 1, 1, 1);
ボタンはタッチで移動できるようになりましたが、relativelayout の左上隅で膨らんでいました。
質問:
移動ボタンが画面の中央で膨らみ、タッチすると移動できるように、コードをどのように改善できますか?
ありがとう!