fill_parent не растягивает фоновое изображение

#android #android-layout #tabs #fill-parent

#Android #android-макет #вкладки #заполнение-родительский элемент

Вопрос:

Я здесь схожу с ума. Клянусь, у меня была эта работа тысячу раз раньше, и сейчас ничего не работает правильно. Я должен делать что-то глупое. Несколько дней назад у меня возникли проблемы с фоном элемента представления списка, который не заполнял родительский элемент, чтобы растягиваться по высоте элемента представления списка. Я, наконец, сдался и просто жестко задал высоту для обоих, чтобы исправить это. Теперь я просто пытаюсь установить фон для всего действия и заполнить его родительским, чтобы изображение занимало весь экран. Это действие находится на вкладке. Вот код для контроллера вкладок и действия, с которым у меня возникают проблемы.

Макет вкладки:

 <?xml version="1.0" encoding="utf-8"?>
<TabHost 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

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

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

        <FrameLayout
            android:id="@android:id/tabcontent"            
            android:layout_width="fill_parent"            
            android:layout_height="fill_parent">

        </FrameLayout>
</LinearLayout>
</TabHost>
  

Хлопотное занятие:

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

<RelativeLayout
    android:id="@ id/localHeader"
    android:layout_width="fill_parent"
    android:layout_height="50dip"
    android:background="@drawable/header2">

    <Button
        android:id="@ id/changeCityButton"
        android:layout_width="80dip"
        android:layout_height="30dip"
        android:layout_marginRight="10dip"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:onClick="buttonChangeOnClickListener"
        android:text="Change"
        android:textColor="#FFFFFF"
        android:background="@drawable/local_deal_redeem_button" />

    <TextView
        android:id="@ id/cityName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/changeCityButton"
        android:textSize="20dip"
        android:textColor="#FFFFFF"
        android:textStyle="bold"
        android:shadowColor="#FF000000"
        android:shadowDx="1"
        android:shadowDy="1"
        android:shadowRadius="1"/>

</RelativeLayout>

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@id/localHeader"
    android:fastScrollEnabled="true"
    android:cacheColorHint="#00000000"
    android:divider="@null"
    android:dividerHeight="0px"/>

</RelativeLayout>
  

Похоже, что эта проблема возникает только на новом Bionic. «@drawable / background» будет растягиваться только до тех пор, пока listview будет длинным. И если в listview нет элементов, он ничего не покажет. Я даже пытался вырвать его из макета и сделать его просто imageview, и это тоже не сработало. Похоже, что где-то есть тег wrap_content, который мне не хватает. Обычно я бы просто сказал, что это что-то не так с Bionic, но, видя, как у меня возникли эти проблемы с фоном ListView, я думаю, что у меня где-то что-то перепуталось. Пожалуйста, помогите!!

Также в моем манифесте:

 <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:resizeable="true" android:anyDensity="true"></supports-screens>
  

Но я попытался удалить это, и независимо от того, какие значения я ввел в эту строку, это ничего не делает в моем приложении.

РЕДАКТИРОВАТЬ: я только что понял, что если я помещу изображение в «fill_parent» scrollview, фон будет соответственно растягиваться. Однако, поскольку экран содержит ListView, я не могу пойти по этому пути. Здесь что-то не так.

РЕДАКТИРОВАТЬ 2: я просто вырвал listview, и он работал отлично. Это как-то связано с listview.

РЕДАКТИРОВАТЬ 3: я просто решил проблему, установив высоту ListView на «wrap_content». Я понятия не имею, почему «fill_parent» вызывал такое поведение на этом устройстве, но оно исправлено, так что теперь все хорошо. Я не могу отвечать самостоятельно еще 6 часов, поэтому, если кто-то захочет указать это в качестве ответа, я выберу его как правильный. Спасибо всем!

Комментарии:

1. вы пробовали android: scaleType=»fitXY»

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

Ответ №1:

Я решил это, установив высоту ListView в значение wrap_content. Я понятия не имею, почему fill_parent вызывал такое поведение на этом телефоне, но теперь он работает правильно, так что все хорошо. Спасибо всем!

Ответ №2:

Попробуйте эту логику с фрагментами, потому что tab теперь устарел. Это мое мнение, и оно может быть неправильным, но однажды попробуйте, человек.

Комментарии:

1. Теперь вы можете позволить себе переработать приложение. Это последняя проблема, которую нужно решить перед выпуском сборки.

2. но я думаю, что ваша проблема заключается в активности вкладки, которая теперь объявлена устаревшей

3. Проблема была на самом деле в ListView. Только потому, что он объявлен устаревшим, это не приведет к тому, что он внезапно перестанет корректно функционировать на предыдущих устройствах. Я, конечно, ценю вклад и буду внедрять фрагменты в будущих сборках.

Ответ №3:

Я просто изучал эту проблему и нашел это:

http://community.developer.motorola.com/t5/MOTODEV-Blog/Why-Does-My-ListView-Look-Different/ba-p/17462

По сути, тема по умолчанию в Bionic устанавливает android:overScrollFooter в ListView. Установка значения @null обеспечит поведение, которое демонстрируют другие устройства.