Просмотр изображения застрял в верхней части android макета - PullRequest
0 голосов
/ 03 апреля 2020

Я поместил две линейные раскладки, под первой линейной раскладкой я поставил «textview», а во второй я поставил «imageview». Но проблема в том, что изображение не движется, я хочу, чтобы значок кости в центре. Всякий раз, когда я пытаюсь перетащить этот значок, он застревает в верхнем левом углу макета.

Я не могу понять, что происходит, поскольку я новичок в android.

Посмотрите на скриншот https://i.stack.imgur.com/SJmEY.png

activity_main. xml

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="@string/Logo"
            android:textAlignment="center"
            android:textColor="#ffffff"
            android:textSize="36sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/five" />
    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity. java

package com.example.snakes;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Вы не можете перетаскивать элементы в LinearLayout. Они располагаются в том порядке, в котором они объявлены в файле макета, в зависимости от набора ориентации (по горизонтали или вертикали).

В вашем случае также нет причин использовать две линейные компоновки, подобные этой. Вы можете разместить оба своих элемента внутри первого и использовать свойство gravity для центрирования вида изображения (например, gravity = "center_vertical").

РЕДАКТИРОВАТЬ: я сам пробовал и решил это использование RelativeLayout внутри LinearLayout. Убедитесь, что RelativeLayout соответствует ширине и высоте родителей, а затем отцентрируйте ImageView внутри RelativeLayout, например:

<androidx.constraintlayout.widget.ConstraintLayout 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">

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_vertical">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <ImageView
            android:id="@+id/someImage"
            android:orientation="vertical"
            android:layout_centerInParent="true"/>
    </RelativeLayout>
</LinearLayout>

0 голосов
/ 03 апреля 2020

Необходимо добавить ко второму линейному макету - операторы ограничений. Я не могу вспомнить точное название их, но я думаю, что это что-то вроде "layout_constraintTop_toBottomOf". это должно сделать их ограничение. затем, если хотите, вы можете определить зазор и настроить вид.

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