Получить нижнюю позицию в верхнем макете, когда вид изменился - PullRequest
0 голосов
/ 12 июня 2018

Мне нужно знать нижнюю часть Y TextView при изменении его размера (либо при изменении текста, либо при изменении ширины при повороте экрана), чтобы задать отступ представления Google Maps.Ниже приведен НЕ реальный код, а упрощенный пример кода просто для демонстрации проблемы.

TextView находится внутри другого макета, поэтому его вершина возвращает 0. Но, конечно, вершина TextView в верхнем макете не равна 0Я пробовал приведенный ниже код, но получил нули.

loc [0] = 0, loc 1 = 0

top = 0, высота= 86

Кроме того, я не уверен, правильно ли getLocationInWindow.Я имею в виду, если то, что я считаю правильным, это может включать AppBar?Но то, что AppBar находится вне верхнего макета (например, RelativeLayout в моем main_activity.xml), поэтому я думаю, что я должен получить местоположение в верхнем макете, а не в окне.Как правильно получить местоположение в верхнем макете?

class MainActivity : AppCompatActivity(),
{
    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var loc = IntArray(2);
        tvAny.getLocationInWindow(loc);
        tvAny.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
            val height = bottom - top;
            Log.d("so", "loc[0] = " + loc[0] +", loc[1] = " + loc[1])
            Log.d("so", "top = " + top +", height = " +height)

        }
    }
}

И Activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:layout_margin="50dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tvAny"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#55FF0000"
            android:text="I don't want any damn vegetables."/>
    </FrameLayout>
</RelativeLayout>

И скриншот: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...