Прокручиваемый макет - PullRequest
0 голосов
/ 20 марта 2012

Как мне сделать такой макет? Заголовок не должен прокручиваться и должен быть всегда видимым.

enter image description here

Дело в том, что Android выдает ошибку, когда я пытаюсь вставить ScrollView в LinearLayout.

Markup:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              style="@style/baseLayout">
    <LinearLayout
        style="@style/app_header" />
    <ScrollView
        style="@style/fillParent">
        <!-- elements here -->
    </ScrollView>
</LinearLayout>

Стили:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="app_theme" parent="android:Theme">
    </style>

    <style name="fillParent">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">fill_parent</item>
    </style>
    <style name="fullWidth">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
    <style name="wrapContent">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

    <style name="baseLayout" parent="fillParent">
        <item name="android:orientation">vertical</item>
        <item name="android:background">@drawable/app_bg</item>
    </style>

    <style name="app_header" parent="fullWidth">
        <item name="android:background">@drawable/header_bg</item>
    </style>
</resources>

Ответы [ 3 ]

2 голосов
/ 20 марта 2012

Следующий код работает для меня, не могли бы вы опубликовать свой код и сообщить нам, что вы, возможно, делаете неправильно?

<?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="match_parent"
        android:layout_height="wrap_content"
        android:text="TITLE BAR"/>
    <ScrollView 
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

Решение

Проблемабыло то, что у ниндзя было более 1 прямого ребенка в ScrollView.

1 голос
/ 20 марта 2012

В вашей разметке:

 ....  
 <ScrollView
      style="@style/fillParent">
       <!-- elements here -->
 </ScrollView>
 ... 

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

1 голос
/ 20 марта 2012

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

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<TextView android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="TITLE BAR"/>

  <ScrollView 
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:orientation="vertical" >

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

  </ScrollView>

</LinearLayout>

Надеюсь, это поможет.

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