У меня эта проблема только на Lollipop, старые версии работают (с 4.0 по 4.Х).

В моем xml есть 3 части:

  • Первая часть: ImageView с TextView.
  • Вторая часть: ListView
  • Третье: нижняя панель с кнопками в LinearLayout (горизонтальная)

Проблема: в устройстве Android Lollipop отсутствует третья часть, и ListView переходит в конец экрана.

Используемая тема: Theme.AppCompat.Light.NoActionBar (чтобы раскрасить MediaRouteButton в серый цвет)

Код XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical">

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

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

            <ImageView
                android:id="@+id/cover"
                android:layout_width="match_parent"
                android:layout_height="@dimen/cover"
                android:layout_marginTop="0dp"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                android:src="@drawable/default_cover" />

            And other stuff...

    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_weight="1"
        android:clipToPadding="false"
        android:divider="@android:color/transparent"
        android:dividerHeight="15.0sp"
        android:paddingBottom="15dp"
        android:paddingTop="15dp"
        android:scrollbars="none" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#f0f0f0"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:paddingBottom="5dp"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="5dp"
            android:weightSum="10">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="left">

                <ImageView
                    android:id="@+id/imageView4"
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:src="@drawable/img1" />

            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="10"
                android:gravity="center">

                <SeekBar
                    android:id="@+id/bar_vol"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="0dp"
                    android:layout_marginRight="5dp" />

            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="right">

                <ImageView
                    android:id="@+id/imageView5"
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:src="@drawable/img2" />

                <android.support.v7.app.MediaRouteButton
                    android:id="@+id/media_route_menu_item"
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:layout_marginLeft="10dp"
                    android:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
                    android:background="@android:color/transparent"
                    android:showAsAction="always"
                    android:title="Cast" />

            </LinearLayout>

        </LinearLayout>

    </LinearLayout>

</LinearLayout>
</RelativeLayout>

Вы хоть представляете, в чем проблема?

0
Skylive 27 Фев 2015 в 18:06

2 ответа

Лучший ответ

Я решил свою проблему! Фактически, LinearLayout находился за панелью навигации. Чтобы исправить это, просто добавьте эту строку в Activity (после setContentView ();):

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

Спасибо за ответы.

0
Skylive 5 Мар 2015 в 10:56

В нижнем LinearLayout, где android:weightSum="10", это сумма всех android:layout_weight дочерних элементов пользовательского интерфейса. Итак ... один LinearLayout (содержащий SeekBar) имеет весь вес layout_weight="10". Это может повлиять на другие элементы пользовательского интерфейса и сделать их невидимыми.

Другой, родительский макет с weightSum является горизонтальным (android :orientation="horizontal"), это означает, что дочерние элементы должны иметь android :layout_width="0dp". В противном случае они противоречат непредсказуемым результатам. Это как если вы хотите получить выгоду от расчета веса (а мне это тоже нравится), не указывайте размер.

В зависимости от того, как идут дела у меня в течение дня, этого поста и вашего ответа, я могу загрузить ваш макет xml для экспериментов. Планирую получить степень магистра по верстке, так как это важно.

Если можете, удалите посторонние LinearLayouts, как я упоминал в своем комментарии выше. Это может облегчить вам жизнь. В противном случае отладка этого макета может означать «ночевку».

0
The Original Android 27 Фев 2015 в 18:12