android怎么改变view的高度
答案:5 悬赏:60 手机版
解决时间 2021-02-05 00:21
- 提问者网友:战皆罪
- 2021-02-04 20:14
如题我重载了keyboardview想在它上面绘制一个候选栏,但是getheight不能重载怎么办
最佳答案
- 五星知识达人网友:酒安江南
- 2021-02-04 20:51
先测量好,然后setMeasuredDimension(measuredHeight, measuredWidth);
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
依据specMode的值,(MeasureSpec有3种模式分别是UNSPECIFIED, EXACTLY和AT_MOST)
如果是AT_MOST,specSize 代表的是最大可获得的空间;
如果是EXACTLY,specSize 代表的是精确的尺寸;
如果是UNSPECIFIED,对于控件尺寸来说,没有任何参考意义。
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
依据specMode的值,(MeasureSpec有3种模式分别是UNSPECIFIED, EXACTLY和AT_MOST)
如果是AT_MOST,specSize 代表的是最大可获得的空间;
如果是EXACTLY,specSize 代表的是精确的尺寸;
如果是UNSPECIFIED,对于控件尺寸来说,没有任何参考意义。
全部回答
- 1楼网友:等灯
- 2021-02-04 23:53
手机格式化,然后重新下载
- 2楼网友:白昼之月
- 2021-02-04 22:28
在android开发过程中,有时需要获取view绘制前的高度或者宽度,一种的可能情形是初始化的时候让某个view的visible = gone的,当触发某个事件的时候需要它显示并且希望有一些动画效果。
这时候就要获取这个view显示前即绘制前的宽度或者高度。原理很简单,view的绘制过程发生之前,会先执行onmeasure方法。那么就可以利用反射来获取需要的值。下面给出获取高度的代码,宽度同理。
private int gettargetheight(view v) {
try {
method m = v.getclass().getdeclaredmethod("onmeasure", int.class,
int.class);
m.setaccessible(true);
m.invoke(v, measurespec.makemeasurespec(
((view) v.getparent()).getmeasuredwidth(),
measurespec.at_most), measurespec.makemeasurespec(0,
measurespec.unspecified));
} catch (exception e) {
}
return v.getmeasuredheight();
}
拿到这个高度之后就可以做想做的动画效果或者是其他的事情了。
- 3楼网友:思契十里
- 2021-02-04 22:20
属性可以设置的
- 4楼网友:执傲
- 2021-02-04 21:30
这样的思路不太对啊 ,如果需要再添加其他的view最好是把keyboardview和你说的候选栏放在一个layout如LinearLayout 或是RelativeLayout里,再去调整位置和高度等。
getHeight在绘制之前是只会返回0的。如果只是单纯需要重新定义view的高度,最好通过LayoutParams来改变里面的width 和height参数
LayoutParams lp = view.getLayoutParams();
lp.width = 110;
lp.height = 500;
view.setLayoutParams(lp);
view.invidate();
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯