永发信息网

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,对于控件尺寸来说,没有任何参考意义。
全部回答
  • 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();
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯