Проект Android Studio: нижняя часть пользовательского интерфейса обрезана

У меня проблема с тем, что нижняя часть моего ListView и ImageButton обрезается, когда я загружаю свое приложение на телефон или при использовании эмулятора. Я мог бы просто использовать поля или отступы, но разве это не зависит от устройства? Я хочу, чтобы мое приложение выглядело так, как я хочу, независимо от размера экрана. Вот мой код:

Класс:

public class Cookbook extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        String[] items = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),
                        R.layout.row_layout,
                        items);

        View view = inflater.inflate(R.layout.frag_cookbook, container, false);
        ListView list = (ListView) view.findViewById(R.id.listView);
        list.setAdapter(adapter);


        return view;
    }
}

XML макета:

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

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="fill"
        android:id="@+id/listView"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:background="#f9e48f" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_add"
        android:background="@null"
        android:layout_gravity="end|bottom"
        android:layout_alignParentBottom="true"
        android:baselineAligned="false"
        android:layout_alignParentEnd="true"
        android:layout_marginBottom="1dp" />


</RelativeLayout>

Предварительный просмотр Android Studio выглядит так:

Предварительная версия Android Studio

Но при эмуляции или загрузке на телефон это выглядит так:

Эмуляция отображения пользовательского интерфейса


person EmacsVI    schedule 03.11.2015    source источник
comment
Кажется, что скриншоты, которые вы добавили, отличаются, откуда взялись вкладки?   -  person Udi Idan    schedule 03.11.2015
comment
поместите свою основную активность xml, где вы нажимаете фрагмент из   -  person Rajesh    schedule 03.11.2015


Ответы (5)


Это потому, что вы используете CoordinatorLayout с ListView. Вы можете изменить свою реализацию на RecyclerView, чтобы добиться правильной прокрутки.

или Если вы ставите тег выше 5.0, вы можете использовать следующий фрагмент кода

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { listView.setNestedScrollingEnabled(true); }

Я думаю, что CoordinatorLayout работает только с дочерними элементами NestedScrollingChild.

person sha    schedule 03.11.2015
comment
Я изменил макет на относительный и установил ViewPager под панелью приложений. Спасибо за чаевые! - person EmacsVI; 03.11.2015

У меня это случилось со мной до недавнего времени. Я также рекомендую опубликовать ваш styles.xml.

Виновником для меня была эта строка кода или что-то подобное:

<item name="android:windowTranslucentStatus">true</item>

Вот вопрос, который я опубликовал с аналогичной проблемой: Макет находится под панелью состояния и программными клавишами< /а>

person Sherlock    schedule 03.11.2015

В Android Design Library ну, FloatingActionButton должен быть внутри CoordinatorLayout, а не в каких-либо других представлениях, например: представление фрагмента на одной из вкладок выше. поэтому попробуйте добавить свой FloatingActionButton к вашему main_layout, а затем просто свяжитесь с активностью, чтобы показать/скрыть FAB и сделать необходимые клики.

person Kosh    schedule 03.11.2015

Поместите приведенный ниже код в onCreateView, я думаю, он сработает.

View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
decorView.setSystemUiVisibility(uiOptions);
person Krunal Patel    schedule 03.11.2015

Изменение макета на RelativeLayout сработало для меня. Затем добавил эту строку в тег viewPager:

android:layout_below="@id/appbar"

Вуаля..!!

person Yousha Arif    schedule 07.09.2018