What i want is, when i click on Dashboard Button it will open like a SlidingDrawer and after it opened when clicked on it again it will close. i use this custom drawer becau
<RelativeLayout
android:id="@+id/relLayTwo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/btnNEWCLICK"
android:background="#000"
android:visibility="gone" > //don't put gone in xml
In OnViewCreated look for the height and after that make this view GONE
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
relLayTwo = (RelativeLayout) findViewById(R.id.relLayTwo);
mHeight = relLayTwo.getHeight();
relLayTwo.setVisibility(View.GONE);}
In this way you will get the height because on onViewCreated the view is already drawn, and after you have what you need, make the view GONE.
Here's how i got solution for this problem.
the actual problem with getting layout's height when we set it to wrap content is, it will not give height until it will actually draw on a screen. and in my case the custom layout got called first and then it will call remaining layout, so there is not a chance for layout to get draw.
so what i did is i got actual height and width of the screen run time by using following code.
DisplayMetrics metrics = new DisplayMetrics();
((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metrics);
height = metrics.heightPixels;
width = metrics.widthPixels;
and after i got screens height and width, inflate view. after that got linearlayouts height and add new height to it using following code.
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) relLayTwo.getLayoutParams();
Log.d("test", "height "+params.height);
params.height = height*40/100;
relLayTwo.setLayoutParams(params);
relLayTwo.setVisibility(View.GONE);
and its worked!!
When a View is first created, it's width and height are not available to you until onMeasure() has been called. Due to this, the first time you try to get the values, they have not been assigned yet.
Since you're using a custom View, the solution is pretty simple. Simply move the code that gets the height and width into onMeasure() and use it after that.
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getWidth(); // Get View Width
height = getHeight();// Get View Height
}
simply use this to get the height
and width
of which visibility is GONE..
myView.getMeasuredHeight();
myView.getMeasuredWidth();