Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何准确判断视图(视图组)的大小_Android_Android Custom View - Fatal编程技术网

Android 如何准确判断视图(视图组)的大小

Android 如何准确判断视图(视图组)的大小,android,android-custom-view,Android,Android Custom View,我想自定义具有左框架布局的视图组。 框架布局可以根据大小进行修改。 这是我的密码 @Override public boolean onTouchEvent(MotionEvent ev) { final int action = MotionEventCompat.getActionMasked(ev); final int actionIndex = MotionEventCompat.getActionIndex(ev); boolean wantTouchEve

我想自定义具有左框架布局的视图组。 框架布局可以根据大小进行修改。 这是我的密码

@Override
public boolean onTouchEvent(MotionEvent ev) {
    final int action = MotionEventCompat.getActionMasked(ev);
    final int actionIndex = MotionEventCompat.getActionIndex(ev);

    boolean wantTouchEvents = true;
    switch (action) {
        case MotionEvent.ACTION_DOWN: {
            Log.i("action_down", "action_down");
            final float x = ev.getX();
            final float y = ev.getY();
            mInitialMotionX = x;
            mInitialMotionY = y;
            break;
        }
        case MotionEvent.ACTION_MOVE: {
            final float x = ev.getX();
            final float y = ev.getY();
            for (int i = 0; i < getChildCount(); i++) {
                View view = getChildAt(i);
                if (isDrawerView(view)) {
                    LayoutParams params = (LayoutParams) view.getLayoutParams();
                    params.width = DRAWER_WIDTH + (int) (x - mInitialMotionX);
                    view.setLayoutParams(params);
                }

            }
            break;
        }
@覆盖
公共事件(MotionEvent ev){
final int action=MotionEventCompat.getActionMasked(ev);
最终int actionIndex=MotionEventCompat.getActionIndex(ev);
布尔wantTouchEvents=true;
开关(动作){
case MotionEvent.ACTION\u DOWN:{
Log.i(“动作停止”,“动作停止”);
最终浮点数x=ev.getX();
最终浮动y=ev.getY();
最小运动x=x;
最小运动=y;
打破
}
case MotionEvent.ACTION\u移动:{
最终浮点数x=ev.getX();
最终浮动y=ev.getY();
对于(int i=0;i
在ontouchevent()方法中,当动作\u移动时,我设置了framelayout的宽度。但我无法判断我设置的宽度。因为framelayout的宽度变化不是线性的。 例如,我将framelayout的最大宽度设置为300dp。 当宽度变大时,如果我在x方向快速移动,framelayout的宽度可能是310或330或其他。
我只是想准确判断framelayout的大小。

为什么在onTouchEvent中调用setLayoutParams?@pskink我更改framelayout的宽度,所以我调用setLayoutParams()来更改framelayout的宽度