Не удается заставить работать прокрутку - PullRequest
0 голосов
/ 30 апреля 2011

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

Спасибо

<TextView 
android:text="test App" 
android:textSize="20dp"
android:layout_gravity="center_horizontal"
android:textColor="#FCFCFC" 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
></TextView>

<TextView 
android:text="" 
android:textSize="20dp"
android:layout_gravity="center_horizontal"
android:textColor="#FCFCFC" 
android:id="@+id/textView3" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
></TextView>


<ScrollView
android:layout_width="match_parent"
android:layout_height="400dp"
>

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



<TextView 
android:text="Last Name" 
android:textSize="15dp"
android:id="@+id/textView4" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:textColor="#FCFCFC"
android:singleLine="true"
></TextView>



<EditText 
android:layout_width="fill_parent" 
android:id="@+id/editText1" 
android:layout_height="wrap_content" 
android:text=""
android:singleLine="true"
></EditText>


<TextView 
android:text="" 
android:textSize="10dp"
android:layout_gravity="center_horizontal"
android:id="@+id/textView5" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
></TextView>


<TextView 
android:text="First Name"
android:textSize="15dp"
android:id="@+id/textView6" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:textColor="#FCFCFC"
android:singleLine="true"
></TextView>

<EditText 
android:layout_width="fill_parent" 
android:id="@+id/editText2" 
android:layout_height="wrap_content" 
android:text=""
android:textSize="20dp"
android:singleLine="true"
></EditText>


<TextView 
android:layout_gravity="center_horizontal" 
android:text=""
android:textSize="15dp"
android:layout_width="wrap_content" 
android:id="@+id/TextView01" 
android:layout_height="wrap_content"
></TextView>

<TextView 
android:text="Description" 
android:textSize="15dp"
android:id="@+id/textView4" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:textColor="#FCFCFC"
android:singleLine="true"
></TextView>


 <EditText 
android:layout_width="fill_parent" 
android:id="@+id/editText1" 
android:layout_height="wrap_content" 
android:text=""
android:textSize="15dp"
android:singleLine="false"
android:lines="10"
></EditText>



</LinearLayout>
</ScrollView>




<TextView 
android:layout_gravity="center_horizontal" 
android:text="" 
android:id="@+id/TextView02" 
android:textColor="#FCFCFC" 
android:textSize="5dp" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content"
></TextView>


<Button 
android:text="Next"
android:textSize="20dp"
android:layout_gravity="center_horizontal"
android:id="@+id/nextpage" 
android:layout_width="150dp" 
android:layout_height="60dp"
android:layout_alignParentBottom="true"
></Button>

Ответы [ 5 ]

1 голос
/ 30 апреля 2011

Ваш ScrollView и его содержимое всегда одного размера. Макет вида не обращает внимания на то, виден он или нет на экране. В настоящее время последние TextView и Button в вашем макете, вероятно, также скрыты в режиме lanscape (я предполагаю, что все это обернуто в корневой LinearLayout, поскольку корневой тег отсутствует). ScrollView просто говорит: «Если мое содержание больше, чем я, я буду прокручивать его».

Вы должны рассмотреть макет, где ваши верхние элементы висят наверху, ваши нижние два элемента висят внизу, а прокрутка заполняет пространство между ними. Таким образом, когда дело доходит до пейзажа, представление будет меньше, и содержимое начнет прокручиваться внутри.

Вот что я думаю, вы хотите:)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <!-- Top Elements -->
  <TextView 
    android:text="test App" 
    android:textSize="20dp"
    android:layout_gravity="center_horizontal"
    android:textColor="#FCFCFC" 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" />
  <TextView 
    android:text="" 
    android:textSize="20dp"
    android:layout_gravity="center_horizontal"
    android:textColor="#FCFCFC" 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_below="@id/textView1" />

  <!-- Bottom Elements -->
  <Button 
    android:text="Next"
    android:textSize="20dp"
    android:layout_gravity="center_horizontal"
    android:id="@+id/nextpage" 
    android:layout_width="150dp" 
    android:layout_height="60dp"
    android:layout_alignParentBottom="true" />
  <TextView 
    android:layout_gravity="center_horizontal" 
    android:text="" 
    android:id="@+id/TextView02" 
    android:textColor="#FCFCFC" 
    android:textSize="5dp" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:layout_above="@id/nextpage" />

  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_below="@id/textView3"
    android:layout_above="@id/TextView02">
    <LinearLayout
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
      <TextView 
        android:text="Last Name" 
        android:textSize="15dp"
        android:id="@+id/textView4" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:textColor="#FCFCFC"
        android:singleLine="true" />
      <EditText 
        android:layout_width="fill_parent" 
        android:id="@+id/editText1" 
        android:layout_height="wrap_content" 
        android:text=""
        android:singleLine="true" />
      <TextView 
        android:text="" 
        android:textSize="10dp"
        android:layout_gravity="center_horizontal"
        android:id="@+id/textView5" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" />
      <TextView 
        android:text="First Name"
        android:textSize="15dp"
        android:id="@+id/textView6" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:textColor="#FCFCFC"
        android:singleLine="true" />
      <EditText 
        android:layout_width="fill_parent" 
        android:id="@+id/editText2" 
        android:layout_height="wrap_content" 
        android:text=""
        android:textSize="20dp"
        android:singleLine="true" />
      <TextView 
        android:layout_gravity="center_horizontal" 
        android:text=""
        android:textSize="15dp"
        android:layout_width="wrap_content" 
        android:id="@+id/TextView01" 
        android:layout_height="wrap_content" />
      <TextView 
        android:text="Description" 
        android:textSize="15dp"
        android:id="@+id/textView4" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:textColor="#FCFCFC"
        android:singleLine="true" />
     <EditText 
        android:layout_width="fill_parent" 
        android:id="@+id/editText1" 
        android:layout_height="wrap_content" 
        android:text=""
        android:textSize="15dp"
        android:singleLine="false"
        android:lines="10" />
    </LinearLayout>
  </ScrollView>

</RelativeLayout>

Я не верю, что в этом случае вам необходима высота 400dp, потому что нижние элементы будут висеть на нижней части экрана, а вам не потребуется фиксированная высота для их разнесения. Однако, если это все еще актуально, поместите его в LinearLayout внутри ScrollView, а не в ScrollView. Это весь макет, кстати. Не вставлять внутрь чего-либо.

Если это не совсем то, что вы ищете, надеюсь, это поставит вас на правильный путь:)

Надеюсь, что поможет!

0 голосов
/ 30 апреля 2011

Я думаю, вы ищете элемент android:isScrollContainer xml. Установите значение true и определите полосы прокрутки в android:scrollbars и android:scrollbarStyle. Документы для разработчиков говорят, что это должно соответствовать IME, но я обнаружил, что это работает не только для этого.

0 голосов
/ 30 апреля 2011
    <ScrollView 
    android:id="@+id/scrllvwNo1" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content">
    <HorizontalScrollView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content">        
             <TextView
             android:id="@+id/text"
             android:text="your text"
             android:gravity="center"
             android:background="#0000aa"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"/>        
    </HorizontalScrollView> 
    </ScrollView>       
0 голосов
/ 30 апреля 2011

Вы должны использовать HorizontalScrollView для горизонтальной прокрутки

0 голосов
/ 30 апреля 2011

Вы пытаетесь прокрутить ScrollView по горизонтали?Согласно API (http://developer.android.com/reference/android/widget/ScrollView.html) ScrollViews работают только вертикально. Вам, вероятно, придется написать собственную реализацию ScrollView, которая прокручивается горизонтально.

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