![]() |
Модераторы: javastic |
![]() ![]() ![]() |
|
derbeerk |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.7.2012 Репутация: нет Всего: нет |
Дано: ViewPager, в котором находится TextView.
Задача: Когда текст в TextView не вмещается на экран, он должен прокручиваться по вертикали. Проблема: Похоже что ViewPager перехватывает вертикальный скроллинг. Даже когда в TextView отображается scrollbar, он всё равно не прокручивается. Вот так выглядит TextView
Это ViewPager
И адаптер к ViewPager
|
||||||
|
|||||||
agen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.9.2012 Репутация: нет Всего: нет |
При большом количестве информации, которую нужно поместить на экране приходится использовать полосы прокрутки. В Android существуют специальные виджеты ScrollView и HorizontalScrollView, которые являются контейнерными элементами и наследуются от ViewGroup. Обратите внимание, что класс TextView использует свою собственную прокрутку и не нуждается в добавлении отдельных полос прокрутки. Но использование отдельных полос даже с TextView может улучшить вид вашего приложения и повышает удобство работы для пользователя.
На панели инструментов в Eclipse виджеты можно найти в папке Composition. В контейнеры ScrollView и HorizontalScrollView можно размещать только один дочерний элемент (обычно LinearLayout), который в свою очередь может быть контейнером для других элементов. Виджет ScrollView, несмотря на свое название, поддерживает только вертикальную прокрутку, поэтому для создания вертикальной и горизонтальной прокрутки необходимо использовать ScrollView в сочетании с HorizontalScrollView. Обычно ScrollView используют в качестве корневого элемента, а HorizontalScrollView — дочернего. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scroll" android:layout_width="wrap_content" android:layout_height="wrap_content"> <HorizontalScrollView android:id="@+id/hscroll" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24px" android:isScrollContainer="true"/> </HorizontalScrollView> </ScrollView> В в теле метода onCreate() создайте ссылку на элемент TextView, объявленный в XML-разметке, и запишите в него через метод setText() какой-нибуль длинный текст, который не поместится в видимые размеры экрана устройства: TextView text (TextView)findViewById(R.id.textview); // загружаем текст text.setText("здесь должен быть длинный текст"); Запустив проект, вы должны увидеть вертикальную и горизонтальную полосы прокрутки при попытке скроллирования. Если полосы прокрутки вас раздражают, то используйте атрибут android:scrollbars="none", который скроет их. Методы scrollBy() и scrollTo() Вы можете программно прокручивать контент с помощью методов scrollBy() и scrollTo(). Например, можно организовать автоматическую прокрутку во время чтения. В нашем примере мы будем прокручивать контент с помощь трёх кнопок <?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="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/scrollup" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Scroll Up" /> <Button android:id="@+id/scrolldown" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Scroll Down" /> <Button android:id="@+id/scrolltotop" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Scroll To Top" /> <ScrollView android:id="@+id/myview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#A0A0A0" android:orientation="vertical" > <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This\nView\nCan\nBe\nScroled\nBy Buttons!" android:textSize="40dp" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Dummy Button" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Dummy Button" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Dummy Button" /> </LinearLayout> </ScrollView> </LinearLayout> Сам код для методов: package ru.alexanderklimov.scrollview; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ScrollView; public class ScrollViewDemoActivity extends Activity { Button buttonScrollUp, buttonScrollDown, buttonScrollToTop; ScrollView myScroll; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonScrollUp = (Button) findViewById(R.id.scrollup); buttonScrollDown = (Button) findViewById(R.id.scrolldown); buttonScrollToTop = (Button) findViewById(R.id.scrolltotop); myScroll = (ScrollView) findViewById(R.id.myview); buttonScrollUp.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub myScroll.scrollBy(0, +20); } }); buttonScrollDown.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub myScroll.scrollBy(0, -20); } }); buttonScrollToTop.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub myScroll.scrollTo(0, 0); } }); } } |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Android | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |