package it.demo.twitterlike.android.ui.utils; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.inputmethod.InputMethodManager; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; public class ViewUtils { private ViewUtils() { } public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); listView.requestLayout(); } public static void openKeyboard(Context context) { InputMethodManager imm = (InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); } public static void closeKeyboard(Context context, View view) { InputMethodManager imm = (InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); closeKeyboard(imm, view); } public static void closeKeyboard(InputMethodManager imm, View view) { if (imm != null) { imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } } public static boolean populateTextView(View root, int id, String message) { return populateTextView(root.findViewById(id), message); } public static boolean populateTextView(View view, String message) { if (view != null && view instanceof TextView) { return populateTextView((TextView) view, message); } return false; } public static boolean populateTextView(TextView textView, String message) { if (textView != null) { textView.setText(message); return true; } return false; } public static void removeParentView(View view) { if (view != null) { ViewParent viewParent = view.getParent(); if (viewParent != null && viewParent instanceof ViewGroup) { ((ViewGroup) viewParent).removeView(view); } } } public static View getFirstViewByTag(View root, Object tag) { View result = null; if (root != null) { result = root.findViewWithTag(tag); if (result == null && root instanceof ViewGroup) { ViewGroup groupView = (ViewGroup) root; final int childCount = groupView.getChildCount(); for (int i = 0; i < childCount; i++) { result = getFirstViewByTag(groupView.getChildAt(i), tag); if (result != null) { break; } } } } return result; } }