我想将垂直轴的相对布局转换为其高度的%50%。怎么做?
<RelativeLayout
android:id="@+id/rl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:translationY="50dp"> <!-- i tried 50% , .50. But it does not work.
然后我试图在活动的onCreate中找到它的高度,然后动态转换%50%。但是高度返回零。
onCreate(){
...
RelativeLayout rl = findViewById(R.id.RL);
rl.getHeight();
}
怎么做?
答案 0 :(得分:1)
您无法在onCreate()中检索视图的高度。因为它还没有测量和绘制。试试这个:
RelativeLayout rl = findViewById(R.id.RL);
rl.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
rl.getMeasuredHeight();
}
});
获得高度后,您可以按照自己的意愿使用它。
答案 1 :(得分:0)
Android有一些烦人的错误,使我们使用无用的黑客。为了获得onCreate的高度我使用了这个:
var handler=Handler()
handler.postDelayed(object:Runnable{
override fun run() {
findViewById<RelativeLayout>(R.id.toMove).y=findViewById<RelativeLayout>(R.id.toMove).y+(findViewById<RelativeLayout>(R.id.toMove).height/2)
}
}, 200)
我知道这是200毫秒的延迟而且t不是最好的解决方案,但它很容易实现并且工作得很好。