абсолютный макет в режиме прокрутки на Android

#android

#Android

Вопрос:

я хочу создать XML-дизайн Android в следующем формате, который я сделал, но он не работает.

макет xml: кодирование

     <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@ id/LinearLayout01"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <TableLayout android:id="@ id/widget836"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView android:id="@ id/widget837" android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            </ImageView>
        </TableLayout>
        <ScrollView android:id="@ id/ScrollView111"
            android:layout_width="fill_parent" android:layout_height="fill_parent">

            <AbsoluteLayout android:id="@ id/widget883"
                android:layout_width="wrap_content" android:layout_height="wrap_content">

                <EditText android:id="@ id/email" android:layout_width="303px"
                    android:layout_height="56px" android:text="Email" android:textSize="18sp"
                    android:layout_x="1px" android:layout_y="15px">
                </EditText>
                <EditText android:id="@ id/pass" android:layout_width="303px"
                    android:layout_height="56px" android:text="password"
                    android:textSize="18sp" android:layout_x="3px" android:layout_y="57px">
                </EditText>

                <TextView android:id="@ id/enter" android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:text="Enter an email address and password above, and your accout will be created."
                    android:layout_x="0px" android:layout_y="65px">
                </TextView>
                <TextView android:id="@ id/primarydisplay"
                    android:layout_width="100px" android:layout_height="40px"
                    android:text="Primary Display" android:textStyle="bold"
                    android:layout_x="0px" android:layout_y="75px">
                </TextView>
                <TextView android:id="@ id/gps" android:layout_width="100px"
                    android:layout_height="40px" android:text="Speed >"
                    android:textStyle="bold" android:layout_x="200px" android:layout_y="75px">
                </TextView>
            </AbsoluteLayout>
            <AbsoluteLayout android:id="@ id/widget884"
                android:layout_width="wrap_content" android:layout_height="wrap_content">
                <TextView android:id="@ id/distanceunit"
                    android:layout_width="100px" android:layout_height="40px"
                    android:text="Distance Unit" android:textStyle="bold"
                    android:layout_x="0px" android:layout_y="85px">
                </TextView>
                <TextView android:id="@ id/miles" android:layout_width="100px"
                    android:layout_height="40px" android:text="Miles >"
                    android:textStyle="bold" android:layout_x="200px" android:layout_y="85px">
                </TextView>
            </AbsoluteLayout>
        </ScrollView>
    </LinearLayout>
  

Ошибка cat журнала:

Вызвано: java.lang.Исключение IllegalStateException: ScrollView может содержать только один прямой дочерний элемент

пожалуйста, поправьте меня.

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

1. чувак, ты можешь добавить только один дочерний вид в scrollview, поэтому просто поместите эти два абсолютных макета в один макет и добавьте его в режим прокрутки. вот и все.

2. привет, как объединить макет Absloute в один.? пожалуйста, поправьте меня

3. просто поместите эти два макета в один linearlayout, а затем добавьте его в scrollview

4. привет, я объединяю два абсолютных макета, но второй абсолютный отображается только без прокрутки. установил ли я высоту и ширину для абсолютного макета. теперь у него есть fill_parent.

Ответ №1:

У вас может быть только один прямой дочерний элемент в a, Scrollview поэтому вам следует либо объединить ваши два AbsoluteLayout элемента, либо обернуть их в другой элемент, такой как another AbsoluteLayout element.

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@ id/LinearLayout01"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TableLayout android:id="@ id/widget836"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:orientation="vertical">
        <ImageView android:id="@ id/widget837" android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </ImageView>
    </TableLayout>
    <ScrollView android:id="@ id/ScrollView111"
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <!-- Wrap -->
        <AbsoluteLayout
             android:layout_width="wrap_content" android:layout_height="wrap_content">

            <AbsoluteLayout android:id="@ id/widget883"
              android:layout_width="wrap_content" android:layout_height="wrap_content">

              <EditText android:id="@ id/email" android:layout_width="303px"
                android:layout_height="56px" android:text="Email" android:textSize="18sp"
                android:layout_x="1px" android:layout_y="15px">
              </EditText>
              <EditText android:id="@ id/pass" android:layout_width="303px"
                android:layout_height="56px" android:text="password"
                android:textSize="18sp" android:layout_x="3px" android:layout_y="57px">
              </EditText>

              <TextView android:id="@ id/enter" android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Enter an email address and password above, and your accout will be created."
                android:layout_x="0px" android:layout_y="65px">
              </TextView>
              <TextView android:id="@ id/primarydisplay"
                android:layout_width="100px" android:layout_height="40px"
                android:text="Primary Display" android:textStyle="bold"
                android:layout_x="0px" android:layout_y="75px">
              </TextView>
              <TextView android:id="@ id/gps" android:layout_width="100px"
                android:layout_height="40px" android:text="Speed >"
                android:textStyle="bold" android:layout_x="200px" android:layout_y="75px">
              </TextView>
          </AbsoluteLayout>
          <AbsoluteLayout android:id="@ id/widget884"
            android:layout_width="wrap_content" android:layout_height="wrap_content">
              <TextView android:id="@ id/distanceunit"
                android:layout_width="100px" android:layout_height="40px"
                android:text="Distance Unit" android:textStyle="bold"
                android:layout_x="0px" android:layout_y="85px">
              </TextView>
              <TextView android:id="@ id/miles" android:layout_width="100px"
                android:layout_height="40px" android:text="Miles >"
                android:textStyle="bold" android:layout_x="200px" android:layout_y="85px">
              </TextView>
          </AbsoluteLayout>

        </AbsoluteLayout>
        <!-- /Wrap -->
    </ScrollView>
</LinearLayout>
  

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

1. привет, я получил все объединенное верхнее изображение, которое не отображается. как объединить макет Absloute в один.? пожалуйста, поправьте меня.

Ответ №2:

Как указано в ошибке, ScrollView предназначен для одного дочернего элемента. Ваш содержит два AbsoluteLayout s. Можно ли объединить эти виды?

Ответ №3:

я не понимаю, почему вы хотите использовать два абсолютных макета внутри режима прокрутки……

Поместите их в единый макет

Также обратите внимание, что использование AbsoluteLayout устарело. Попробуйте вместо этого использовать относительные или линейные макеты…

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

1. потому что я хочу нарисовать закругленный прямоугольный фон для двух абсолютных макетов в соответствии с дизайном.

2. @murali зачем вам нужен scrollview….. Вы добавляете новые компоненты динамически. Я упомянул об этом, потому что ваши текущие XML-компоненты будут заполнять экран, и поэтому нет необходимости в ScrollView