如何动态获得view的大小

如何动态获得view的大小,第1张

将viewonmeasure(0,0)设置为0的时候表示,此时不需要考虑父控件的布局问题,直接使用getMeasuredWidth和getMeasuredHeight获取此view的自身的实际大小,可以看下面的例子:这个是在网上引用的一段代码

public class Utility {

public static void setListViewHeightBasedOnChildren(ListView listView) {

ListAdapter listAdapter = listViewgetAdapter();

if (listAdapter == null) {

// pre-condition

return;

}

int totalHeight = 0;

for (int i = 0; i < listAdaptergetCount(); i++) {

View listItem = listAdaptergetView(i, null, listView);

listItemmeasure(0, 0);

totalHeight += listItemgetMeasuredHeight();

}

ViewGroupLayoutParams params = listViewgetLayoutParams();

paramsheight = totalHeight + (listViewgetDividerHeight() (listAdaptergetCount() - 1));

listViewsetLayoutParams(params);

}

}下面来说说onMeasure方法:onMeasure方法是父控件在调用子控件的时候,会想子空间传递两个参数——widthMeasureSpec和heightMeasureSpec,来指明控件可以获得的大小参数,然后可以将此参数设置到view的setMeasuredDimension方法中;注意在计算父控件传递过来的--widthMeasureSpec和heightMeasureSpec参数的时候需要首先获得参数的Mode类型即AT_MOST(最大空间),EXACTLY(实际空间)和UNSPECIFIED;

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int measuredHeight = measureHeight(heightMeasureSpec);

int measuredWidth = measureWidth(widthMeasureSpec);

setMeasuredDimension(measuredHeight, measuredWidth);

private int measureHeight(int measureSpec) {

// Return measured widget height

}

private int measureWidth(int measureSpec) {

// Return measured widget width ;

}

边界参数——widthMeasureSpec和heightMeasureSpec ,效率的原因以整数的方式传入。在它们使用之前,首先要做的是使用MeasureSpec类的静态方法getMode和getSize来译解,如下面的片段所示:

int specMode = MeasureSpecgetMode(measureSpec);

int specSize = MeasureSpecgetSize(measureSpec);

ios 怎么获取一个view的位置

打开appstore进入应用,右上角的分享按钮(从右往左数第二个),拷贝连接即可。如下图:

如何获取一个view在布局中的位置

public View getViewByPosition(int pos, ListView listView) {

final int firstListItemPosition = listViewgetFirstVisiblePosition();

final int lastListItemPosition = firstListItemPosition + listViewgetChildCount() - 1;

if (pos < firstListItemPosition || pos > lastListItemPosition ) {

return listViewgetAdapter()getView(pos, null, listView);

} else {

final int childIndex = pos - firstListItemPosition;

return listViewgetChildAt(childIndex);

}

} 已解决,通过这个方法就可以实现了获取item中的view

如何获取一个uicollectionviewcell的位置

UICollectionViewCell cell = (UICollectionViewCell )[collectionView

cellForItemAtIndexPath:indexPath];一句话就能获取到点击cell的frame,十分好用,同样适用于tableView。

ios中怎么获取collectionview中cell的位置

你在点击cell的时候调用 - (void)performSegueWithIdentifier:(NSString )identifier sender:(id)sender ;

那不是有个sender嘛,你可以给它传值。

然后在-(void)prepareForSegue:(UIStoryboardSegue )segue sender:(id)sender 里的sender,就是你刚传的那个值。

Flash中怎么通过代码来获取一个左上、右下的位置,_x和_y只能获取图像原点的位置。

设左上坐标(x1,y1),右下坐标(x2,y2),原点坐标(x0,y0),元件名称为mcPic,则:

x1 = mcPicx - mcPicwidth/2

y1 = mcPicy - mcPicheight/2

x2 = mcPicx + mcPicwidth/2

y2 = mcPicy + mcPicheight/2

x0 = mcPicx

y0 = mcPicy

怎样通过qq获取一个人的位置信息

除了使用者本人定位,其他人无法获取,这属于隐私保护

android 怎么获取ActionBar上某个menu的位置

Android 30以上的手机默认是不显示溢出菜单的,那如何强制在Android 44以下的手机显示溢出菜单呢?可以使用以下方法:

[java] view plaincopy在CODE上查看代码片派生到我的代码片

强制actionbar显示overflow菜单

适配类似魅族手机无法显示溢出菜单的解决方案

上面已经解决了如何在Android 44以下的手机强制显示溢出菜单,下面来解决一些奇葩手机无法显示溢出菜单的问题。为什么魅族手机无法显示,了解到的是魅族没有所谓的actionbar,它们称为 artbar,看来是魅族的工程师把官方的actionbar进行了修改。一个字,坑!不过小巫想到了一个解决办法,我们每部手机都有自己的手机品牌,我们可以针对这些奇葩手机进行适配,溢出菜单我们就使用popupwindow来替代。

MATLAB中,怎么获取一个向量中最大的N个元素,并获取它们所在的位置

v=rand(1,5)

[mv mi]=max(v)

%mv为最大值,mi为最大值索引,v(mi)=mv

[sv si]=sort(v,2,'descend')

%si为从大到小的序列,比如要去最大的3个数就是v(si(1:3))

ios地图定位怎么获取两个点之间的位置

通常我们在手机端打开百度地图后,客户端会自动对我们所处的位置进行定位的。如果没有进行定位的话,你可以点击地图页面的左下角的圆形图标,见下图红色框中所示,点击之后会自动更新,并且显示定位的地址信息。

VBS中如何获取一个数组中最大值的位置

以下VBS脚本可以实现这个功能:

Public Function getArrMaxValueIndex(ByVal arr)

Dim ix, ixMax

ixMax = 0

For ix = 1 To UBound(arr)

If ( arr(ixMax) < arr(ix) ) Then

ixMax = ix

End If

Next

getArrMaxValueIndex = ixMax

End Function

'Define array and index for max entry

Dim arr, ixMax

'Initialize the array

arr = Array(4, 1, 8, 6, 3,6)

'Get the index of the max value

ixMax = getArrMaxValueIndex(arr)

'Print result

MsgBox "Max value: " & arr(ixMax) & " was found at " & ixMax & " index"

如果当前选中的结点是pNode,下面的方法获取到他的所有一级子结点

for(int i = 0; i<pNodeNodesCount; i++)

{

MessageBoxShow(pNodeNodes[i]Text);

}

使用Nodes对象获取的就是深度为1的子结点,你试试看。

C#的TreeView控件 *** 作还是特别方便的。

以上就是关于如何动态获得view的大小全部的内容,包括:如何动态获得view的大小、ios 怎么获取一个view的位置、C#如何获取treeview树节点中某深度节点的名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9735563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存