неверное отображение фрагмента на симуляторе - PullRequest
0 голосов
/ 08 апреля 2019

Я копирую тот же XML-код в действие, все в порядке. Но в этом фрагменте, это происходит, дисплей имеет некоторые проблемы на симуляторе, и я думаю, что весь дисплей немного сдвинется вниз. Код Java ниже относится к этому фрагменту. Activity_liuruiquan это имя этого фрагмента。 Я думаю, что ключевая проблема заключается в том, что я ИСПОЛЬЗУЮ фрагмент гнезда, так что информация будет в верхней части этого макета (рис.) Просто побелеть

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:background="@color/background1"
    android:baselineAligned="false">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/applogo"
            android:layout_width="178dp"
            android:layout_height="178dp"
            android:contentDescription="@string/todo"
            android:paddingStart="30dp"
            android:paddingEnd="30dp"
            android:src="@drawable/applogo" />

        <TextView
            android:id="@+id/guidedog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="start"
            android:text="@string/guidedog"
            android:textColor="@color/colorAccent"
            android:textSize="25sp" />
    </LinearLayout>


</LinearLayout>
public class Liu extends Fragment {
    View LiuView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        LiuView = inflater.inflate(R.layout.activity_liuruiquan, container, false);
        return LiuView;
    }


}
 public void replaceFragment(Fragment somefragment) {
        FragmentTransaction transaction =  getFragmentManager().beginTransaction();
        transaction.add(R.id.fragment_container, somefragment);
        transaction.addToBackStack("1");
        transaction.commitAllowingStateLoss();
    }

enter image description here

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Как видно из вашего 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"
    android:baselineAligned="false">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/applogo"
            android:layout_width="178dp"
            android:layout_height="178dp"
            android:paddingStart="30dp"
            android:paddingEnd="30dp"
            android:src="@drawable/dummy_upasarga_logo" />

        <TextView
            android:id="@+id/guidedog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="start"
            android:text="Hello"
            android:textColor="@color/colorAccent"
            android:textSize="25sp" />
    </LinearLayout>


</RelativeLayout>

В вашем случае используйте RelativeLayout.

0 голосов
/ 08 апреля 2019

Вы используете фиксированный размер в своих представлениях, что делает ваш экран не реагирующим на все размеры экрана, потому что разные телефоны имеют разные размеры экрана.

Если вы хотите, чтобы ваш макет был одинаковым для всех экрановиспользуйте ConstraintLayout / Относительный макет и DONT используйте фиксированный размер для ваших представлений.

Также - пожалуйста, избегайте использования вложенных представлений, потому что это действительно делаетваш макет медленнее (он будет продолжать работать медленнее в зависимости от количества ваших вложенных представлений)

Вот простой пример использования constraintLayout:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constrainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">


<ImageView
    android:id="@+id/imageView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintBottom_toTopOf="@+id/button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:srcCompat="@tools:sample/avatars[12]" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:text="Button"
    app:layout_constraintBottom_toTopOf="@+id/guideline3"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/imageView3" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.5" />

Это будет выглядеть так:

enter image description here

Примечание. Это только один пример, который я привел, вы можете изменить свой макет так, как вы хотите.ConstraintLayout - действительно удобный макет, и я рекомендую изучить его.

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