2017-08-29 78 views
-1

我使用这个代码:如何设置的Fab按钮的位置协调员布局的左侧或右侧边缘的Android

fabButton.setOnTouchListener(new View.OnTouchListener() { 

    float x, y; 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()){ 

      case MotionEvent.ACTION_MOVE: 

       fabButton.setX(fabButton.getX() + (event.getX() - x)); 
       fabButton.setY(fabButton.getY() + (event.getY() - y)); 
       return true; 
      case MotionEvent.ACTION_DOWN: 
       x = event.getX(); 
       y = event.getY(); 
       return true; 
     } 

     return false; 
    } 
}); 

现在我想设置的Fab按钮的位置,最右边或左边协调员布局的最边缘。

可能

if (xCoordinate < screen center) 
{ 
    align Fab button to the Right screen 
} 

if (xCoordinate > Screen Center) 
{ 
    align Fab button to the left of the screen 
} 

我不知道如何管理这件事情。按要求----

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
CoordinatorLayout.LayoutParams params= (CoordinatorLayout.LayoutParams) 
fab.getLayoutParams(); 
params.anchorGravity = Gravity.BOTTOM | GravityCompat.START; 
fab.setLayoutParams(params/); 

集开始,结束,顶部,底部:

+0

的可能的复制[设置FAB锚重力动态](HTTPS:/ /stackoverflow.com/questions/38039574/set-fab-anchor-gravity-dynamically) –

+0

没有不工作 –

回答

0

我设法使这个,现在它的正确途径左侧位置的Fab按钮或右键

Display display = getWindowManager().getDefaultDisplay(); 
        Point size = new Point(); 
        display.getSize(size); 
        CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); 
        p.setBehavior(new FloatingActionButton.Behavior()); 
        fab.setLayoutParams(p); 
        if(fab.getX() < 0) 
        { 
         fab.setX(2.0f); 
        } 
        if(fab.getX() > size.x) 
        { 
         fab.setX(size.x -1); 
        } 

        if(fab.getY() < 0) 
        { 
         fab.setY(4.0f); 
        } 
        if(fab.getY() > size.y) 
        { 
         fab.setY(size.y -1); 
        } 

        if(fab.getX() < size.x/2) 
        { 
         fab.setX((5*size.x/100)); 
        }else 
        { 
         fab.setX(size.x - (12*size.x/100)); 
        } 

其工作

0
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) 
floatingbutton.getLayoutParams(); 
lp.gravity = Gravity.CENTER_HORIZONTAL; 
/// or any other place you want like 
相关问题