private void relayout() { if (recyclerView != null) { recyclerView.measure(0, 0); recyclerView.layout(0, 0, 100, 1000); } }
rv.measure(makeSizeSpec(200, EXACTLY), makeSizeSpec(200, EXACTLY)); recyclerBinder.setSize(200, 200); rv.layout(0, 0, 200, 200);
rv.measure(makeSizeSpec(100, EXACTLY), makeSizeSpec(100, EXACTLY)); recyclerBinder.setSize(100, 100); rv.layout(0, 0, 100, 100);
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // Let the default measurement take place super.onMeasure(widthMeasureSpec, heightMeasureSpec); // Extract the width and height finally decided final int width = MeasureSpec.getSize(widthMeasureSpec); final int height = MeasureSpec.getSize(heightMeasureSpec); // Make measure specs for measuring children final int measureSpecWidthExactly = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); final int measureSpecHeightExactly = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); final int measureSpecHeightWrap = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); // Measure and assign dimensions to children mRecyclerView.measure(measureSpecWidthExactly, measureSpecHeightExactly); mEditText.measure(measureSpecWidthExactly, measureSpecHeightWrap); }
public void fitView(RecyclerView recyclerView) { final int maxHeightPercentage = 30; final int fitHeightPercentage = 25; final int screenHeight = recyclerView.getRootView().getHeight(); recyclerView.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); // Measure height when wrap content final int recyclerHeight = recyclerView.getMeasuredHeight(); Log.d("adapter", "screen height " + screenHeight); Log.d("adapter", "recycler view height " + recyclerHeight); ViewGroup.LayoutParams inputLayoutParams = recyclerView.getLayoutParams(); if (recyclerHeight > (screenHeight * maxHeightPercentage / 100)) { // If child exceed max% of screen height inputLayoutParams.height = (screenHeight * fitHeightPercentage / 100); // Set height to fit% of screen } else { inputLayoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; // Under max% of screen height, just wrap content } recyclerView.setLayoutParams(inputLayoutParams); // Set Layout Parameter to original view }