Please suggest any approach which i use to create it .
Query : I am creating 2-Spinner view , where i have to add Country/Cities li
You can also affect drop down view location and size by subclassing Spinner
and overriding its getWindowVisibleDisplayFrame(Rect outRect)
which is used by android.widget.PopupWindow
for calculations. Just set outRect
to limit the area where drop down view can be displayed.
This approach is of course not suitable for all scenarios since sometimes you want to place drop down view so it doesn't obscure another view or by some other condition known only "outside the instance".
In my case, I needed to apply FLAG_LAYOUT_NO_LIMITS
flag to my activity window which caused the outRect
to be huge and therefore part of the drop down view got sometimes hidden behind navigation bar. In order to restore original behavior I used the following override:
@Override
public void getWindowVisibleDisplayFrame(Rect outRect) {
WindowManager wm = (WindowManager) getContext.getSystemService(Context.WINDOW_SERVICE);
Display d = wm.getDefaultDisplay();
d.getRectSize(outRect);
outRect.set(outRect.left, , outRect.right, outRect.bottom);
}