@NonNull private LayoutParams initParams(@NonNull View view, int left, int top) { int[] loc = new int[2]; getLocationOnScreen(loc); final LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); left -= loc[0]; top -= loc[1]; layoutParams.leftMargin = left; layoutParams.topMargin = top; view.setLeft(left); view.setTop(top); if (view.getMeasuredWidth() != 0) { layoutParams.width = view.getMeasuredWidth(); view.setRight(left + layoutParams.width); } if (view.getMeasuredHeight() != 0) { layoutParams.height = view.getMeasuredHeight(); view.setBottom(top + layoutParams.height); } return layoutParams; }
@Test public void getSize_withLayoutParams_notLaidOut_doesCallSizeReady() { view.setLayoutParams(new FrameLayout.LayoutParams(10, 10)); view.setRight(100); view.setBottom(100); target.getSize(cb); verify(cb, times(1)).onSizeReady(anyInt(), anyInt()); }
@Test public void getSize_withLayoutParams_emptyParams_notLaidOutOrLayoutRequested_callsSizeReady() { view.setLayoutParams(new FrameLayout.LayoutParams(0, 0)); view.setRight(100); view.setBottom(100); target.getSize(cb); verify(cb).onSizeReady(100, 100); }
@Test public void getSize_withWrapContentWidthAndValidHeight_usesDisplayDimenAndValidHeight() { int height = 100; LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, height); view.setLayoutParams(params); setDisplayDimens(100, 200); activity.visible(); view.setRight(0); target.getSize(cb); verify(cb).onSizeReady(200, height); }
@Test public void getSize_withValidWidthAndHeight_notLaidOut_notLayoutRequested_callsSizeReady() { view.setRight(100); view.setBottom(100); target.getSize(cb); verify(cb).onSizeReady(100, 100); }
private void setViewBounds(final View view, final int width, final int height) { //TODO make this work for all versions view.setLeft(0); view.setRight(0); view.setRight(width); view.setBottom(height); final ViewParent parent = view.getParent(); if (parent != null && ((View) parent).getRight() != 0 && ((View) parent).getBottom() != 0) { setViewBounds(((View) parent), width, height); } } }
private void reposition() { for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); if (child.getVisibility() != GONE) { LayoutParams layoutParams = populateLayoutParams(child); child.setLeft(layoutParams.mLeft); child.setTop(layoutParams.mTop); child.setRight(layoutParams.mRight); child.setBottom(layoutParams.mBottom); } } }
if (Build.VERSION.SDK_INT > 10) { v.setLeft(v.getLeft() - mTemp1); v.setRight(v.getRight() - mTemp1); } else { v.layout(v.getLeft() - mTemp1, v.getTop(), v.getRight() - mTemp1, v.getBottom()); if (Build.VERSION.SDK_INT > 10) { v.setLeft(v.getLeft() + mTemp1); v.setRight(v.getRight() + mTemp1); } else { v.layout(v.getLeft() + mTemp1, v.getTop(), v.getRight() + mTemp1, v.getBottom());
if (Build.VERSION.SDK_INT > 10) { v.setLeft(v.getLeft() + offset); v.setRight(v.getRight() + offset); } else { v.layout(v.getLeft() + offset, v.getTop(), v.getRight() + offset, v.getBottom()); if (Build.VERSION.SDK_INT > 10) { v.setLeft(v.getLeft() - mTemp1); v.setRight(v.getRight() - mTemp1); } else { v.layout(v.getLeft() - mTemp1, v.getTop(), v.getRight() - mTemp1, v.getBottom()); if (Build.VERSION.SDK_INT > 10) { v.setLeft(v.getLeft() + offset); v.setRight(v.getRight() + offset); } else { v.layout(v.getLeft() + offset, v.getTop(), v.getRight() + offset, v.getBottom());
if (Build.VERSION.SDK_INT > 10) { v.setLeft(v.getLeft() - mTemp1); v.setRight(v.getRight() - mTemp1); } else { v.layout(v.getLeft() - mTemp1, v.getTop(), v.getRight() - mTemp1, v.getBottom()); if (Build.VERSION.SDK_INT > 10) { v.setLeft(v.getLeft() + mTemp1); v.setRight(v.getRight() + mTemp1); } else { v.layout(v.getLeft() + mTemp1, v.getTop(), v.getRight() + mTemp1, v.getBottom());
//parent rlOuterView = (SlidingLayout) findViewById(R.id.sl_sliding_view); //child - slides up/down rlAppBarFooter = (RelativeLayout) findViewById(R.id.rl_footer); rlMainView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { if( rlOuterView.isMoving() ){ v.setTop(oldTop); v.setBottom(oldBottom); v.setLeft(oldLeft); v.setRight(oldRight); } } });