将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树节点中某深度节点的名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)