Проблема макета MergeAdapter во фрагменте - PullRequest
2 голосов
/ 28 сентября 2011

Я пытаюсь сделать макет в Android с фрагментами. Я начал использовать Commonsware MergeAdapter , но у меня странные проблемы. Макет раньше работал нормально, но теперь я получаю это:

http://img856.imageshack.us/img856/2796/layoutbug.png

Есть пара проблем: белая полоса должна иметь текст, идущий по всей ее длине. Я установил TextView с белым фоном, чтобы убедиться, что ширина была установлена ​​правильно. Флажок прямо под ним также должен сказать «Проблема?» но он пытается обернуть текст по какой-то причине.

Вот код компоновки, который добавляется:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Instructions" />
    <TextView android:id="@+id/tvInstructions" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Instructions go here" android:textSize="32dp" android:background="#FFFFFF"></TextView>
    <LinearLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="horizontal" android:paddingTop="24dp">
        <CheckBox android:id="@+id/cbIssues" android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="0dp" android:text="Issues?" />
        <TextView android:id="@+id/tvStation" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight=".5" android:text="Station:" />
        <Spinner android:id="@+id/spStation" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight=".5"/>
    </LinearLayout>
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pending data" />
</LinearLayout>

и вот как я надуваю его в onActivity фрагмента:

LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
MergeAdapter _adapter = new MergeAdapter();

View observationHeaderView = inflater.inflate(R.layout.observationheader, getListView(), false);
_adapter.addView(observationHeaderView);

У меня такое ощущение, что это как-то связано с тем, как я раздуваю макет. Любая помощь будет оценена. Спасибо.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Не используйте match_parent для android:layout_height для чего-то, что входит в AdapterView, такого как ваш корень LinearLayout.

Вы также можете временно поместить макет заголовка за пределы ListView (например, в вертикальном LinearLayout, также удерживая ListView) и отладить его, прежде чем добавить сложность наличия в ListView.

Помимо этого, запустите Hierarchy View (перспектива Eclipse или автономная версия) и попытайтесь выяснить, где ваши правила компоновки работают неправильно.

Кроме того, я не уверен, насколько хорошо ваш Spinners будет работать внутри ListView в сотах.

0 голосов
/ 29 сентября 2011

Кажется, моя проблема была в том, что layout_width было match_parent в определенных местах в моем заголовке, когда это должно было быть wrap_content.Работали следующие:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Instructions" />
    <TextView android:id="@+id/tvInstructions" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Instructions go here" android:textSize="32dp" android:background="#FFFFFF"></TextView>
    <LinearLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="horizontal" android:paddingTop="24dp">
        <CheckBox android:id="@+id/cbIssues" android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="wrap_content" android:text="Issues?" />
        <TextView android:id="@+id/tvStation" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight=".5" android:text="Station:" />
        <Spinner android:id="@+id/spStation" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight=".5"/>
    </LinearLayout>
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pending data" />
</LinearLayout>
...