Не удается найти расположение кнопки в приложении Android - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь получить абсолютное местоположение моих кнопок после того, как они были отображены RelativeLayout. Это сделано для того, чтобы я мог рисовать анимацию пульсирующего свечения в месте расположения кнопок. Я пробовал Button.getX (); и Button.getLocationOnScreen (); и оба вернули целочисленное значение 0. Я попытался поместить кнопки в LinearLayout и все еще не смог получить координаты для расположения кнопки на экране. Я также попытался запустить onPostCreate (), чтобы убедиться, что кнопки были на экране, прежде чем проверять их расположение. Я хочу получить их местоположение при загрузке приложения, чтобы я мог создать анимацию для запуска под ними. Кажется, что расположение кнопок не может быть определено во время onCreate. Что-нибудь, что я мог бы пропустить?

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

final Button playButton = findViewById(R.id.play);
        System.out.println(playButton.getX());
        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                play();
            }
        });

playButton.getX();
playButton.getY();

*OR*

int playLoc = int[2] //<--- create two dimensional array for x and y 
playLoc = playButton.getLocationOnScreen();

и файл XML Layout:

<RelativeLayout>
     <android.support.v7.widget.AppCompatButton
            android:id="@+id/play"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_above="@id/seekbar"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center"
            android:background="@android:drawable/ic_media_play" />
</RelativeLayout>

1 Ответ

0 голосов
/ 23 марта 2019

Я нашел ответ на мою проблему.Вместо использования метода onPostCreate () я использую метод post (который является функцией класса Button) внутри метода onCreate (), чтобы указать, что ПОСЛЕ кнопка была нарисованас относительной разметкой, чтобы я мог получить расположение кнопок после того, как они были нарисованы в поле зрения.Это полезно, когда вы запускаете приложение на устройствах с разными размерами экрана, вы всегда будете знать координаты, где была нарисована кнопка.

Как получить координату кнопки?

Я надеюсь, что это сэкономит людям время, которое я потратил, пытаясь решить эту проблему!и спасибо Vektor88 за решение!

Также вот код на этапе настройки onCreate.Это сработало правильно для меня:

playButton = findViewById(R.id.play);
        playButton.post(new Runnable() {
            @Override
            public void run() {
                playx = playButton.getX();
                playy = playButton.getY();
                System.out.println("play x = " + playx + " play y = " + playy);
            }
        });

ПРИМЕЧАНИЕ

Почему я получаю отрицательные оценки на этот пост?Я чувствовал, что дал очень четкие сообщения, приводящие к ответу, и я не чувствую, что я должен был быть забанен.

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