下面列出了android.widget.ListView#getLayoutParams ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 使用自定义的Listview不用调用该方法
* */
public void setListViewHeightBasedOnChildren(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
// listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
// 计算子项View 的宽高
listItem.measure(0, 0);
// 统计所有子项的总高度
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}
/**** Method for Setting the Height of the ListView dynamically.
**** Hack to fix the issue of not showing all the items of the ListView
**** when placed inside a ScrollView ****/
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter mAdapter = listView.getAdapter();
int totalHeight = 0;
for (int i = 0; i < mAdapter.getCount(); i++) {
View mView = mAdapter.getView(i, null, listView);
mView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
totalHeight += mView.getMeasuredHeight();
Log.w("HEIGHT" + i, String.valueOf(totalHeight));
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (mAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
private 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);
}
/**
* Shrink listview height
* @param listView
* @param adapter
*/
public void setListViewHeightBasedOnChildren(ListView listView, AboutAdapter adapter) {
int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight() + 180;
Log.i("htbridge", "listItem.getMeasuredHeight() = " + listItem.getMeasuredHeight() );
}
Log.i("htbridge", "totalHeight = " + totalHeight);
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
/**
* 计算ListView的高度, 重置ListView的高度.
*
* @param listView
*/
public static void setListViewHeightBasedOnChildren(ListView listView)
{
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null)
{
return;
}
View listItem = null;
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++)
{
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);
}
public void setListViewHeightBasedOnChildren(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
// listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
// 计算子项View 的宽高 注意:LinearLayout才有measure方法 所以,此setListViewHeightBasedOnChildren方法只适用ListView的父布局为LinearLayout
listItem.measure(0, 0);
// 统计所有子项的总高度
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}
/**
* 根据item设置listview高度
* */
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的高度, 重置ListView的高度.
*
* @param listView
*/
public static void setListViewHeightBasedOnChildren(ListView listView)
{
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null)
{
return;
}
View listItem = null;
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++)
{
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);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_buy_ticket_info, null);
lvInfos = (ListView) v.findViewById(R.id.buyTicketInfo_lvInfos);
MyDatabase myDB = new MyDatabase(this.getActivity());
mAdapter= new SimpleAdapter(this.getActivity(), mLstDatas, R.layout.item_buy_ticket_info,
new String[]{MyDatabase.KEY, MyDatabase.VALUE},
new int[]{R.id.item_buy_ticket_info_tvQuestion, R.id.item_buy_ticket_info_tvAnswer}
);
lvInfos.setAdapter(mAdapter);
myDB.closeDB();
notifyAdapterDataChanged(myDB.getTicketInfos(0));
MyUtils.setListViewHeightBasedOnChildren(lvInfos); //设置ListView全部显示
ViewGroup.LayoutParams params = lvInfos.getLayoutParams();
params.height += 3000; //方法不太准,人为校正高度
lvInfos.setLayoutParams(params);
sv1 = (ScrollView)v.findViewById(R.id.buyTicketInfo_sv1);
sv1.smoothScrollTo(0, 20);
return v;
}
public void setListViewHeightBasedOnChildren(ListView listView, int childCount) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < childCount; i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
int px = listItem.getMeasuredHeight();
totalHeight += px * 1.2;
}
Log.d(TAG, String.format("total height: %d", totalHeight));
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (5 - 1));
listView.setLayoutParams(params);
}
public static void setListViewHeightBasedOnChildren(ListView listView) {
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = getListViewHeightBasedOnChildren(listView);
listView.setLayoutParams(params);
System.out.println("params.height:" + params.height);
LinearLayout linearLayout = (LinearLayout) listView.getParent();
// android.widget.LinearLayout.LayoutParams params2 = new
// android.widget.LinearLayout.LayoutParams(
// LayoutParams.MATCH_PARENT, params.height);
//
// params2.setMargins(10, 0, 10, 10);
linearLayout.setLayoutParams(params);
}
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() + 50;
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() -1));
listView.setLayoutParams(params);
}
public static void setListViewHeightBasedOnChildren(ListView listView,
boolean mIsFlag) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
int moneHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0); // 计算子项View 的宽高
totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
// sysout.println("----------高度----------"+listItem.getMeasuredHeight());
// if(i==len-1 && (mIsFlag)){ //评论特殊处理
// moneHeight = listItem.getMeasuredHeight()/2+10;
// }
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
totalHeight = moneHeight + totalHeight;
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// sysout.println("-----总高度----------------"+params.height);
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
// sysout.println("---------ListView高度----------"+listView.getLayoutParams().height);
}
/**
* Creates the view of a context menu. Based off the Context Type, it'll adjust the list of
* items and display only the ones that'll be on that specific group.
* @param activity Used to get the resources of an item.
* @param params used to create the header text.
* @param items A set of Items to display in a context menu. Filtered based off the type.
* @param isImage Whether or not the view should have an image layout or not.
* @param maxCount The maximum amount of {@link ContextMenuItem}s that could exist in this view
* or any other views calculated in the context menu. Used to estimate the size
* of the list.
* @return Returns a filled LinearLayout with all the context menu items.
*/
@VisibleForTesting
ViewGroup createContextMenuPageUi(Activity activity, ContextMenuParams params,
List<ContextMenuItem> items, boolean isImage, int maxCount) {
ViewGroup baseLayout = (ViewGroup) LayoutInflater.from(activity).inflate(
R.layout.tabular_context_menu_page, null);
ListView listView = (ListView) baseLayout.findViewById(R.id.selectable_items);
displayHeaderIfVisibleItems(params, baseLayout);
if (isImage) {
// #displayHeaderIfVisibleItems() sets these two views to GONE if the header text is
// empty but they should still be visible because we have an image to display.
baseLayout.findViewById(R.id.context_header_layout).setVisibility(View.VISIBLE);
baseLayout.findViewById(R.id.context_divider).setVisibility(View.VISIBLE);
displayImageHeader(baseLayout, params, activity.getResources());
}
// Set the list adapter and get the height to display it appropriately in a dialog.
Runnable onDirectShare = new Runnable() {
@Override
public void run() {
mOnShareItemClicked.run();
mDialog.dismiss();
}
};
TabularContextMenuListAdapter listAdapter =
new TabularContextMenuListAdapter(items, activity, onDirectShare);
ViewGroup.LayoutParams layoutParams = listView.getLayoutParams();
layoutParams.height = measureApproximateListViewHeight(listView, listAdapter, maxCount);
listView.setLayoutParams(layoutParams);
listView.setAdapter(listAdapter);
listView.setOnItemClickListener(this);
return baseLayout;
}
private void initialize(){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels;
final TextView headerText = (TextView)findViewById(R.id.dbeditHeaderText);
RelativeLayout.LayoutParams headerTextParams = (RelativeLayout.LayoutParams)headerText.getLayoutParams();
headerTextParams.leftMargin = screenHeight/8;
headerText.setLayoutParams(headerTextParams);
headerText.setTextSize(TypedValue.COMPLEX_UNIT_DIP,(float)screenHeight/45);
headerText.setText("Face DataBase");
headerText.setTextColor(Color.LTGRAY);
headerText.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
headerText.setTypeface(null, Typeface.BOLD);
ListView listView = (ListView)findViewById(R.id.dbeditListView);
ListAdapter listAdapter = new ListAdapter();
listView.setAdapter(listAdapter);
listView.setOnItemClickListener(itemClickListener);
listView.setVerticalScrollBarEnabled(true);
listView.setFastScrollEnabled(true);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)listView.getLayoutParams();
params.leftMargin = screenWidth/40;
params.rightMargin = screenWidth/40;
//params.topMargin = screenHeight/40;
listView.setLayoutParams(params);
listView.setVerticalScrollBarEnabled(false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mListView = (ListView) getView().findViewById(android.R.id.list);
int marginTop = getActivity().getResources().getDimensionPixelSize(
R.dimen.search_engine_list_margin_top);
MarginLayoutParams layoutParams = (MarginLayoutParams) mListView.getLayoutParams();
layoutParams.setMargins(0, marginTop, 0, 0);
mListView.setLayoutParams(layoutParams);
mListView.setAdapter(mSearchEngineAdapter);
mListView.setDivider(null);
}
public void setListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if(listAdapter == null) {
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);
}
@Override
public void onIdle()
{
// called when page rendering has become idle
if (mWaitingForSpinner)
{
spinner.dismiss();
mWaitingForSpinner = false;
}
if (mWaitingForIdle)
{
spinner.dismiss();
setPageLabel();
// get the current page
DocPageView dpv = (DocPageView)mDocView.getViewFromAdapter(mDocView.getCurrentPage());
Page page = dpv.getPage();
// count the separations
int numSeparations = page.countSeparations();
// set up the list
mColorList = (ListView)findViewById(R.id.proof_color_list);
mColorAdapter = new ChooseColorAdapter(getLayoutInflater(), new ColorChangeListener() {
@Override
public void onColorChange() {
mApplyButton.setEnabled(true);
}
});
mColorList.setAdapter(mColorAdapter);
// get each one
for (int i=0; i<numSeparations; i++)
{
// get it
Separation sep = page.getSeparation(i);
String name = sep.name;
// transform to a color that can be used to colorize icons
int alpha = (sep.bgra >> 24) & 0xFF;
int red = (sep.bgra >> 16) & 0xFF;
int green = (sep.bgra >> 8 ) & 0xFF;
int blue = (sep.bgra >> 0 ) & 0xFF;
int color = (alpha << 24) | (red << 16) | (green << 8) | (blue << 0);
mColorAdapter.add(new ChooseColorItem(sep.name, color, true, sep));
}
mColorList.getLayoutParams().width = getWidestView(getBaseContext(), mColorAdapter);
}
mWaitingForIdle = false;
}
public void setHeightofListViewBasedOnContent(ListView listView) {
ListAdapter mAdapter = listView.getAdapter();
int totalHeight = 0;
for (int i = 0; i < mAdapter.getCount(); i++) {
totalHeight += getResources().getDimension(R.dimen.item_list_height);
Log.w("HEIGHT" + i, String.valueOf(totalHeight));
}
totalHeight = totalHeight + (listView.getDividerHeight() * (mAdapter.getCount() - 1)) + listView.getPaddingTop();
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight;
listView.setLayoutParams(params);
listView.requestLayout();
}
private void initView() {
setContentView(R.layout.dialog_hd_old_addresses);
lv = (ListView) findViewById(R.id.lv);
lv.setAdapter(adapter);
lv.getLayoutParams().height = caculateHeight();
}