如何在Android中将UI元素的高度转换为%50%?

时间:2018-05-04 08:41:44

标签: android user-interface

我想将垂直轴的相对布局转换为其高度的%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();
}

怎么做?

2 个答案:

答案 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不是最好的解决方案,但它很容易实现并且工作得很好。