Horizontal ScrollView Android
The Horizontal ScrollView in Android is a FrameLayout which is used to scroll the child elements or views in a horizontal direction. The functionality of a horizontal scroll view in Android is facilitated by the android.widget.HorizontalScrollView class.As the name itself suggests, it only supports horizontal scrolling. Vertical ScrollView can be used in Android for vertical scrolling.
Example:
activity_main.xml:
In the activity_main.xml file, we will drag the HorizontalScrollView from the palette and will place some views or elements inside it.
xml version="1.0" encoding="utf-8"?> RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Scroll Horizontally to see more" android:id="@+id/textView" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="25dp"> HorizontalScrollView android:layout_width="match_parent" android:layout_height="60dp" android:id="@+id/horizontalScrollView"> LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A" android:id="@+id/button1" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="B" android:id="@+id/button2" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="C" android:id="@+id/button3" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="D" android:id="@+id/button4" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="E" android:id="@+id/button5" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="F" android:id="@+id/button6" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="G" android:id="@+id/button7" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="H" android:id="@+id/button8"/> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I" android:id="@+id/button9" /> Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="J" android:id="@+id/button10"/> LinearLayout> HorizontalScrollView> LinearLayout> RelativeLayout>
Activity class:
In the MainActivity.java, no code is added other than the auto-generated code itself.
package com.example.radioapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
package com.example.radioapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); >>
ScrollView и HorizontalScrollView
При большом количестве информации, которую нужно поместить на экране приходится использовать полосы прокрутки. В Android существуют специальные компоненты ScrollView и HorizontalScrollView, которые являются контейнерными элементами и наследуются от ViewGroup. Обратите внимание, что класс TextView использует свою собственную прокрутку и не нуждается в добавлении отдельных полос прокрутки. Но использование отдельных полос даже с TextView может улучшить вид вашего приложения и повышает удобство работы для пользователя.
На панели инструментов компоненты можно найти в разделе Containers.
В контейнеры ScrollView и HorizontalScrollView можно размещать только один дочерний элемент (обычно LinearLayout), который в свою очередь может быть контейнером для других элементов. Виджет ScrollView, несмотря на свое название, поддерживает только вертикальную прокрутку, поэтому для создания вертикальной и горизонтальной прокрутки необходимо использовать ScrollView в сочетании с HorizontalScrollView. Обычно ScrollView используют в качестве корневого элемента, а HorizontalScrollView в качестве дочернего. Можно и наоборот, пробуйте.
В в теле метода onCreate() создайте ссылку на элемент TextView, объявленный в XML-разметке, и запишите в него через метод setText() какой-нибуль длинный текст, который не поместится в видимые размеры экрана устройства:
TextView text (TextView)findViewById(R.id.textview); // загружаем текст text.setText("здесь должен быть длинный текст");
Запустив проект, вы должны увидеть вертикальную и горизонтальную полосы прокрутки при попытке скролирования.
Если полосы прокрутки вас раздражают, то используйте атрибут android:scrollbars=»none», который скроет их.
По такому же принципу можете вложить ImageView, чтобы просматривать большие картинки:
Методы scrollBy() и scrollTo()
Вы можете программно прокручивать контент с помощью методов scrollBy() и scrollTo(). Например, можно организовать автоматическую прокрутку во время чтения. В нашем примере мы будем прокручивать контент с помощью трёх кнопок.
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); >>); > >
Дополнительное чтение
Библиотека ParallaxScrollView с использованием эффекта параллакса. Вы прокручиваете длинный текст, а задний фон прокручивается чуть медленнее. Возможно, кому-то пригодится. Там же можно скачать готовое демо и просмотреть в действии.
Руководство Android ScrollView и HorizontalScrollView
Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи.
Facebook
1- ScrollView и HorizontalScrollView
В Android, ScrollView это вид Layout, является прямоугольным контейнером (container) с вертикальной полосой прокрутки и может содержать другой компонент с размером больше, чем он сам. Похоже на ScrollView, HorizontalScrollView это контейнер с горизонтальной полосой прокрутки.
В общем, ScrollView и HorizontalScrollView очень полезны, используются для содержания контента большого размера (size) и пользователю нужно использовать полосу прокрутки, чтобы полностью посмотреть содержание.
ScrollView и HorizontalScrollView могут содержать только прямой подкомпонент, поэтому их подкомпонент обычно является другим контейнером (container), чтобы содержать один или более подкомпонентов.
На Android Studio если вы перетащите ScrollView (Или HorizontalScrollView) в интерфейс, он автоматически будет добавлен в подкомпонент это LinearLayout, вы можете удалить данный подкомпонент, чтобы использовать дургой подкомпонент.
Вам не стоит использовать ScrollView с ListView или GridView, так как оба этих компонента имеют собственную готовую вертикальну полосу прокрутки.
2- Пример ScrollView
В данном примере вертикальный LinearLayout имеет много подкомпонентов, ему нужно пространство с достаточной высотой. Но размер экрана устройства пользователя ограничен, поэтому нужно его расположить в ScrollView.
package com.example.scrollviewexample; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ScrollView; public class MainActivity extends AppCompatActivity < private ScrollView scrollView; private Button buttonScrollUp; private Button buttonScrollDown; public static final int SCROLL_DELTA = 15; // Pixel. @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.scrollView = (ScrollView) this.findViewById(R.id.scrollView); this.buttonScrollUp = (Button) this.findViewById(R.id.button_scrollUp); this.buttonScrollDown = (Button) this.findViewById(R.id.button_scrollDown); this.buttonScrollUp.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < doScrollUp(); >>); this.buttonScrollDown.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < doScrollDown(); >>); > private void doScrollUp() < int x = this.scrollView.getScrollX(); int y = this.scrollView.getScrollY(); if(y - SCROLL_DELTA >= 0) < this.scrollView.scrollTo(x, y-SCROLL_DELTA); >> private void doScrollDown() < int maxAmount = scrollView.getMaxScrollAmount(); int x = this.scrollView.getScrollX(); int y = this.scrollView.getScrollY(); if(y + SCROLL_DELTA > >
3- Пример HorizontalScrollView
В данном примере горизонтальный LinearLayout имеет много подкомпонентов, ему нужно пространство с достаточной шириной. Но размер экрана устройства пользователя ограничен, поэтому нужно его расположить в HorizontalScrollView.
package com.example.horizontalscrollviewexample; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.HorizontalScrollView; public class MainActivity extends AppCompatActivity < private HorizontalScrollView horizontalScrollView; private Button buttonScrollLeft; private Button buttonScrollRight; public static final int SCROLL_DELTA = 15; // Pixel. @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.horizontalScrollView = (HorizontalScrollView) this.findViewById(R.id.horizontalScrollView); this.buttonScrollLeft = (Button) this.findViewById(R.id.button_scrollLeft); this.buttonScrollRight = (Button) this.findViewById(R.id.button_scrollRight); this.buttonScrollLeft.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < doScrollLeft(); >>); this.buttonScrollRight.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < doScrollRight(); >>); > private void doScrollLeft() < int x = this.horizontalScrollView.getScrollX(); int y = this.horizontalScrollView.getScrollY(); if(x - SCROLL_DELTA >= 0) < this.horizontalScrollView.scrollTo(x - SCROLL_DELTA, y); >> private void doScrollRight() < int maxAmount = horizontalScrollView.getMaxScrollAmount(); int x = this.horizontalScrollView.getScrollX(); int y = this.horizontalScrollView.getScrollY(); if(x + SCROLL_DELTA > >
View more Tutorials:
Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.
Android Beginners Guide To Create A Weather Forecast App
* * The Complete Android Oreo(8.1) , N ,M and Java Development
Absolute Java Basics for Android
Android App & Game Development :Build 6 Android Apps & Games
Android and iOS Apps for Your WordPress Blog
Unity 3d Game Development — iOS, Android, & Web — Beginners
Learn Android Development From Scratch
Ultimate Coding Course for Web App and Android Development
Unity Android Game Development : Build 7 2D & 3D Games
The Complete Android™ Material Design Course
Publish Games on Android, iTunes, and Google Play with UE4
Advance Android Programming — learning beyond basics
Learning Path:Android:Application Development with Android N
The Android Crash Course For Beginners to Advanced
Android development quick start for beginners
Developing High Quality Android Applications
Android App Development and Design
Become an iOS/Android Game Developer with Unity 2017
The Complete Android & Java Developer Course — Build 21 Apps
Learning Path: Android: App Development with Android N
The Complete Android App Development
Create Android & iOS Apps Without Coding
Develop Your First 2D Game With Unity3D for Android
Full Stack Mobile Developer course ( iOS 11, and Android O )
Develop Android Apps using Python: Kivy