如何通过上下触摸来增加布局

时间:2017-02-21 11:25:03

标签: android android-layout android-studio android-linearlayout

在我的项目中,我们有2个Linearlayout内部布局文件,我们希望通过上下调整增加/减少高度

enter image description here

在布局中,我有一个水平视图,用于更改布局的高度。此视图是第二个布局

2 个答案:

答案 0 :(得分:1)

  1. 首先使用Android listView find the amount of pixels scrolled
  2. 检测按视图滚动的区域数量
  3. 然后将此滚动高度动态设置为视图Android set height and width of Custom view programmatically

答案 1 :(得分:0)

我可以解决问题。完整的代码是:

public class MultiTouchListener implements View.OnTouchListener {


    private float mPrevX;
    private float mPrevY;

    public QuranActivity mainActivity;
    public MultiTouchListener(QuranActivity mainActivity1) {
        mainActivity = mainActivity1;
    }

    @Override
    public boolean onTouch(View view, MotionEvent event) {
        float currX,currY;
        int action = event.getAction();
        switch (action ) {
            case MotionEvent.ACTION_DOWN: {

                mPrevX = event.getX();
                mPrevY = event.getY();
                break;
            }

            case MotionEvent.ACTION_MOVE:
            {

                int w = mainActivity.getWindowManager().getDefaultDisplay().getWidth() - 100;
                int h = mainActivity.getWindowManager().getDefaultDisplay().getHeight() - 100;



                currX = event.getRawX();
                currY = event.getRawY();


               ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(view.getLayoutParams());


                //marginParams.topMargin = (int)(currY - mPrevY);


            /*    if(currX>w){
                    marginParams.leftMargin = (int)(currX - mPrevX)-100;
                }
                else {
                    marginParams.leftMargin = (int)(currX - mPrevX);
                }


                if(currY>h){
                    marginParams.rightMargin = (int)(currY - mPrevY)-100;
                }
                else {
                    marginParams.rightMargin = (int)(currY - mPrevY);
                }
*/




                marginParams.setMargins(0, (int)(currY - mPrevY),0, 0);
                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
                view.setLayoutParams(layoutParams);

                Log.e("onTouch X",currX - mPrevX+"  " + "" );
                Log.e("onTouch Y",currY - mPrevY+"  " + "" );



                break;
            }



            case MotionEvent.ACTION_CANCEL:
                break;

            case MotionEvent.ACTION_UP:

                break;
        }

        return true;
    }
}