Alt noktalı Android ViewPager


Yanıtlar:


356

Bu kadar koda gerek yok.

Yalnızca kullanarak çok kodlama olmadan tüm bu şeyler yapabilir viewpagerile tablayout.

Ana Düzeniniz:

<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="wrap_content">

   <android.support.v4.view.ViewPager
       android:id="@+id/pager"
       android:layout_width="match_parent"
       android:layout_height="match_parent">

   </android.support.v4.view.ViewPager>
   <android.support.design.widget.TabLayout
       android:id="@+id/tabDots"
       android:layout_alignParentBottom="true"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:tabBackground="@drawable/tab_selector"
       app:tabGravity="center"
       app:tabIndicatorHeight="0dp"/>
</RelativeLayout>

UI öğelerinizin hareketsizliğini veya parçasını aşağıdaki gibi bağlayın:

Java Kodu:

mImageViewPager = (ViewPager) findViewById(R.id.pager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabDots);
tabLayout.setupWithViewPager(mImageViewPager, true);

İşte bu, gitmekte fayda var.

Çekilebilir klasörde aşağıdaki xml kaynak dosyasını oluşturmanız gerekir .

tab_indicator_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    android:innerRadius="0dp"
    android:shape="oval"
    android:thickness="4dp"
    android:useLevel="false"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/colorAccent"/>
</shape>

tab_indicator_default.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:innerRadius="0dp"
            android:shape="oval"
            android:thickness="2dp"
            android:useLevel="false">
            <solid android:color="@android:color/darker_gray"/>
    </shape>

tab_selector.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/tab_indicator_selected"
          android:state_selected="true"/>

    <item android:drawable="@drawable/tab_indicator_default"/>
</selector>

Benim gibi tembel mi hissediyorsun? Yukarıdaki kod bir kütüphaneye dönüştürüldü! Kullanım Sınıfınıza implementation 'com.chabbal:slidingdotsplash:1.0.2' aşağıdakileri ekleyin : Etkinlik veya Parça düzeninize aşağıdakileri ekleyin.

<com.chabbal.slidingdotsplash.SlidingSplashView
        android:id="@+id/splash"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:imageResources="@array/img_id_arr"/>

strings.xmlÖrneğin, bir tamsayı dizisi oluşturun

<integer-array name="img_id_arr">
   <item>@drawable/img1</item>
   <item>@drawable/img2</item>
   <item>@drawable/img3</item>
   <item>@drawable/img4</item>
</integer-array>

Bitti! Ekstra sayfa değişikliklerini dinlemek için addOnPageChangeListener(listener); Github bağlantısını kullanın .


3
Soruyu sormadan önce zaten kaldırmıştım, çünkü zaten bana çok yardımcı oldu, ama şimdi +2 veya +100'ü apvote edebilmeyi diliyorum çünkü onPageChangeListener'ı eklemek benim için mükemmel çalıştı! Ve sadece bunu kullanabilen herkes için netleştirmek için, güncellemelerinizi sadece onPageSelected geri aramasında yapmanız gerekir, onPageScrolled geri aramasına güncelleme eklemek dağınık hale gelir, kaydırmaya başlar başlamaz güncellemeyi başlatır, görsel olarak iyi!
Mohamed Hamdaoui

1
Neden bir TabLayout'a ihtiyacımız var?
winklerrr

14
Daha com.google.android.material.tabs.TabLayoutyeni sürümlerde kullanmak istiyorsunuz
schlenger

2
Güncelleme: işe yarıyor ancak yeni bileşenler kullanmalısınız: androidx.viewpager.widget.ViewPager ve com.google.android.material.tabs.TabLayout
dreinoso

2
Yukarıdaki çekilebilir XML, şekli olarak değiştirene kadar garip görünüyor ring. Görünüşe göre halka oval yerine slidingdotsplash kütüphanesinde kullanılıyor
katie

39

El yapımı çözümüm:

Düzende:

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/dots"
        />

Ve Faaliyette

private final static int NUM_PAGES = 5;
private ViewPager mViewPager;
private List<ImageView> dots;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...
    addDots();
}

public void addDots() {
    dots = new ArrayList<>();
    LinearLayout dotsLayout = (LinearLayout)findViewById(R.id.dots);

    for(int i = 0; i < NUM_PAGES; i++) {
        ImageView dot = new ImageView(this);
        dot.setImageDrawable(getResources().getDrawable(R.drawable.pager_dot_not_selected));

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        dotsLayout.addView(dot, params);

        dots.add(dot);
    }

    mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            selectDot(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
}

public void selectDot(int idx) {
    Resources res = getResources();
    for(int i = 0; i < NUM_PAGES; i++) {
        int drawableId = (i==idx)?(R.drawable.pager_dot_selected):(R.drawable.pager_dot_not_selected);
        Drawable drawable = res.getDrawable(drawableId);
        dots.get(i).setImageDrawable(drawable);
    }
}

3
Neden Layoutbir nokta koymak için ağır bileşenleri kullanıyorsunuz ? ViewBunun yerine kullanın .
Apurva

2
Bence doğrusal düzen, noktaları ortalayacak ve gruplayacak.
ShawnV

38
viewPager.addOnPageChangeListener(new OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {

                switch (position) {
    case 0:
        img_page1.setImageResource(R.drawable.dot_selected);
        img_page2.setImageResource(R.drawable.dot);
        img_page3.setImageResource(R.drawable.dot);
        img_page4.setImageResource(R.drawable.dot);
        break;

    case 1:
        img_page1.setImageResource(R.drawable.dot);
        img_page2.setImageResource(R.drawable.dot_selected);
        img_page3.setImageResource(R.drawable.dot);
        img_page4.setImageResource(R.drawable.dot);
        break;

    case 2:
        img_page1.setImageResource(R.drawable.dot);
        img_page2.setImageResource(R.drawable.dot);
        img_page3.setImageResource(R.drawable.dot_selected);
        img_page4.setImageResource(R.drawable.dot);
        break;

    case 3:
        img_page1.setImageResource(R.drawable.dot);
        img_page2.setImageResource(R.drawable.dot);
        img_page3.setImageResource(R.drawable.dot);
        img_page4.setImageResource(R.drawable.dot_selected);
        break;

    default:
        break;
    }


            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });

18
setOnPageChangedListener()kullanımdan kaldırıldı !! addOnPageChangedListener()Şimdi kullanın .
Apurva

12
Tam olarak kaç sayfa kullanacağınızı bilmeniz gerektiğinden, bu gerçekten harika bir çözüm değildir. Bir sayfa ekler veya kaldırır kaldırmaz sorun yaşarsınız.
FrostRocket

3
Çerçeve ile savaşmayın. Android bunu TabLayout olarak yapmak için araçlara sahip, tekerleği yeniden icat etmek için bir neden yok.
kike

3
Bunu basitleştirin: private void setDotSelection (int index) {dot1.setImageResource (index == 0? R.drawable.circle_selected: R.drawable.circle); dot2.setImageResource (dizin == 1? R.drawable.circle_selected: R.drawable.circle); dot3.setImageResource (dizin == 2? R.drawable.circle_selected: R.drawable.circle); dot4.setImageResource (dizin == 3? R.drawable.circle_selected: R.drawable.circle); dot5.setImageResource (dizin == 4? R.drawable.circle_selected: R.drawable.circle); }
Duna

31

Bir ViewPager'de bir sayfa göstergesi ihtiyacını karşılamak için bir kütüphane oluşturdum. Kütüphanem DotIndicator adlı bir Görünüm içeriyor. Kütüphanemi kullanmak compile 'com.matthew-tamlin:sliding-intro-screen:3.2.0'için gradle derleme dosyanıza ekleyin .

Görünüm aşağıdakilere eklenerek düzeninize eklenebilir:

    <com.matthewtamlin.sliding_intro_screen_library.indicators.DotIndicator
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:numberOfDots=YOUR_INT_HERE
            app:selectedDotIndex=YOUR_INT_HERE/>

Yukarıdaki kod, Google Launcher ana ekranındaki noktaların işlevselliğini mükemmel bir şekilde çoğaltır, ancak daha fazla özelleştirmek isterseniz, aşağıdaki özellikler eklenebilir:

  • app:unselectedDotDiameterve app:selectedDotDiameternoktaların çaplarını ayarlamak için
  • app:unselectedDotColorve app:selectedDotColornoktaların renklerini ayarlamak için
  • app:spacingBetweenDots noktalar arasındaki mesafeyi değiştirmek için
  • app:dotTransitionDuration küçükten büyüğe (ve geriye doğru) değişimi canlandırma zamanını ayarlamak için

Ayrıca, görünüm aşağıdakiler kullanılarak programlı olarak oluşturulabilir:

DotIndicator indicator = new DotIndicator(context);

Niteliklere benzer şekilde özellikleri değiştirme yöntemleri vardır. Göstergeyi seçildiği gibi farklı bir sayfa gösterecek şekilde güncellemek için yöntemi indicator.setSelectedItem(int, true)içeriden çağırmanız yeterlidir ViewPager.OnPageChangeListener.onPageSelected(int).

İşte kullanımda bir örnek:

resim açıklamasını buraya girin

İlgileniyorsanız, kütüphane aslında yukarıdaki gifte gösterilene benzer giriş ekranları yapmak için tasarlanmıştır.

Github kaynağı burada bulunabilir: https://github.com/MatthewTamlin/SlidingIntroScreen


İndicator.setSelectedItem (position, true) konumunda hata var; IndexOutOfBoundsException
Dixit

Hangi versiyon? Ben 3.0.1, ayrıca göstergesi.size () ve pozisyon için değerleri neler olduğunu düşündüm düşündüm.
Helios

Harika kütüphane! Ancak, selectedItem ve numberOfItems öğelerini aynı anda güncellemenin daha zarif bir yolu var mı? Hangisinin daha büyük olduğuna bağlı olarak, sipariş değişir, aksi takdirde bir IndexOutOfBounds istisnası atarsınız. Bu özü görün .
vsp

@vsp DotIndicator, SelectionIndicator arabirimini uygular, yani sorununuzu çözebilecek iki kullanışlı yöntem varsa: int getNumberOfItems()ve void setNumberOfItems(). İstisna yakalamak yerine, böyle bir şey yapabilirsiniz gist.github.com/MatthewTamlin/761c7338d271af29526edc7859480aef .
Helios

Gist konuşmasını takip etmeyen herkes için, aslında düzeltilmiş bir hata vardı. 3.0.2 şu an itibariyle en son sürümdür.
Helios


16

Yukarıdaki sorun için daha basit bir çözüm göndermeyi düşündüm ve gösterge numaraları dinamik bir şekilde değiştiğini dotCounts=xyaptığım gibi sadece bir değişken değer değiştirerek değiştirilebilir .

1) "item_selected" adlı sayfa seçili göstergesi için çekilebilir klasörde bir xml dosyası oluşturun.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" android:useLevel="true"
    android:dither="true">
    <size android:height="8dp" android:width="8dp"/>
    <solid android:color="@color/image_item_selected_for_dots"/>
</shape>

2) "item_unselected" adlı seçilmemiş gösterge için bir xml dosyası daha oluşturun

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" android:useLevel="true"
    android:dither="true">

    <size android:height="8dp" android:width="8dp"/>

    <solid android:color="@color/image_item_unselected_for_dots"/>
</shape>

3) Şimdi kodun bu kısmını viewPagerMizanpaj XML dosyanızda ex için göstergeleri görüntülemek istediğiniz yere ekleyin.

 <RelativeLayout
        android:id="@+id/viewPagerIndicator"
        android:layout_width="match_parent"
        android:layout_below="@+id/banner_pager"
        android:layout_height="wrap_content"
        android:gravity="center">

        <LinearLayout
            android:id="@+id/viewPagerCountDots"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:orientation="horizontal" />
        </RelativeLayout>

4) Bu işlevi, düzeninizin şiştiği veya yukarıdaki xml dosyasının ilgili olduğu etkinlik dosyası dosyanızın üstüne ekleyin

private int dotsCount=5;    //No of tabs or images
private ImageView[] dots;
LinearLayout linearLayout;

private void drawPageSelectionIndicators(int mPosition){
    if(linearLayout!=null) {
        linearLayout.removeAllViews();
    }
    linearLayout=(LinearLayout)findViewById(R.id.viewPagerCountDots);
    dots = new ImageView[dotsCount];
    for (int i = 0; i < dotsCount; i++) {
        dots[i] = new ImageView(context);
        if(i==mPosition)
            dots[i].setImageDrawable(getResources().getDrawable(R.drawable.item_selected));
        else
            dots[i].setImageDrawable(getResources().getDrawable(R.drawable.item_unselected));

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );

        params.setMargins(4, 0, 4, 0);
        linearLayout.addView(dots[i], params);
    }
}

5) Son olarak onCreate yönteminize mizanpajınıza referans vermek ve sayfa seçilen konumları işlemek için aşağıdaki kodu ekleyin

drawPageSelectionIndicators(0);
mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    @Override
    public void onPageSelected(int position) {
        drawPageSelectionIndicators(position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }
});


9

Benim önerdiğim çözüm aşağıdadır.

  • Görünüm çağrı cihazlarında sadece bazı görüntüleri göstermemiz gerektiğinden, parçaların hantal kullanımından kaçındık.
    • Görünüm sayfası göstergelerini uyguladı (ek kitaplık veya eklenti olmayan alt noktalar)
    • Görünüm sayfası göstergelerine (noktalar) dokunulduğunda da sayfa gezinmesi gerçekleşiyor.
    • Lütfen kaynaklara kendi resimlerinizi eklemeyi unutmayın.
    • Yorum yapmaktan ve geliştirmekten çekinmeyin.

A) İşte benim activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="schneider.carouseladventure.MainActivity">

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <RelativeLayout
        android:id="@+id/viewPagerIndicator"
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dp"
        android:gravity="center">

        <LinearLayout
            android:id="@+id/viewPagerCountDots"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:orientation="horizontal" />

    </RelativeLayout>


</RelativeLayout>

B) pager_item.xml

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

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

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView" />
</LinearLayout>

C) MainActivity.java

import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, View.OnClickListener {

    int[] mResources = {R.drawable.nature1, R.drawable.nature2, R.drawable.nature3, R.drawable.nature4,
            R.drawable.nature5, R.drawable.nature6
    };

    ViewPager mViewPager;
    private CustomPagerAdapter mAdapter;
    private LinearLayout pager_indicator;
    private int dotsCount;
    private ImageView[] dots;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        pager_indicator = (LinearLayout) findViewById(R.id.viewPagerCountDots);
        mAdapter = new CustomPagerAdapter(this, mResources);
        mViewPager.setAdapter(mAdapter);
        mViewPager.setCurrentItem(0);
        mViewPager.setOnPageChangeListener(this);

        setPageViewIndicator();

    }

    private void setPageViewIndicator() {

        Log.d("###setPageViewIndicator", " : called");
        dotsCount = mAdapter.getCount();
        dots = new ImageView[dotsCount];

        for (int i = 0; i < dotsCount; i++) {
            dots[i] = new ImageView(this);
            dots[i].setImageDrawable(getResources().getDrawable(R.drawable.nonselecteditem_dot));

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT
            );

            params.setMargins(4, 0, 4, 0);

            final int presentPosition = i;
            dots[presentPosition].setOnTouchListener(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    mViewPager.setCurrentItem(presentPosition);
                    return true;
                }

            });


            pager_indicator.addView(dots[i], params);
        }

        dots[0].setImageDrawable(getResources().getDrawable(R.drawable.selecteditem_dot));
    }

    @Override
    public void onClick(View v) {

    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {

        Log.d("###onPageSelected, pos ", String.valueOf(position));
        for (int i = 0; i < dotsCount; i++) {
            dots[i].setImageDrawable(getResources().getDrawable(R.drawable.nonselecteditem_dot));
        }

        dots[position].setImageDrawable(getResources().getDrawable(R.drawable.selecteditem_dot));

        if (position + 1 == dotsCount) {

        } else {

        }
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}

D) CustomPagerAdapter.java

 import android.content.Context;
    import android.support.v4.view.PagerAdapter;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;

    public class CustomPagerAdapter extends PagerAdapter {
        private Context mContext;
        LayoutInflater mLayoutInflater;
        private int[] mResources;

        public CustomPagerAdapter(Context context, int[] resources) {
            mContext = context;
            mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mResources = resources;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {

            View itemView = mLayoutInflater.inflate(R.layout.pager_item,container,false);
            ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
            imageView.setImageResource(mResources[position]);
           /* LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(950, 950);
            imageView.setLayoutParams(layoutParams);*/
            container.addView(itemView);
            return itemView;
        }

        @Override
        public void destroyItem(ViewGroup collection, int position, Object view) {
            collection.removeView((View) view);
        }

        @Override
        public int getCount() {
            return mResources.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    }

E) seçilenitem_dot.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" android:useLevel="true"
    android:dither="true">

    <size android:height="12dip" android:width="12dip"/>

    <solid android:color="#7e7e7e"/>
</shape>

F) seçilmemiş öğe_dot.xml

 <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" android:useLevel="true"
        android:dither="true">        
        <size android:height="12dip" android:width="12dip"/>        
        <solid android:color="#d3d3d3"/>
    </shape>

ilk görüntü

resim açıklamasını buraya girin


Bunu kullandım ama viewpager kaydırma noktalarında değişmiyor
Aditya Vyas-

1
bu en iyi cevap.
Sandeep Londhe

1

Herkes viewPagergösterge olarak küçük resimlerle bir oluşturmak isterse , bu kitaplığı kullanmak bir seçenek olabilir: viewPager for viewPager, kaynak olarak görüntü bağlantılarıyla da çalışır.


0

İşte bunu yukarıdaki çözümlere biraz benzer şekilde yaptım. Tüm resimler indirildikten sonra loadDots () yöntemini çağırdığınızdan emin olun .

    private int dotsCount;
    private TextView dotsTextView[];

    private void setupAdapter() {
        adapter = new SomeAdapter(getContext(), images);
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(0);
        viewPager.addOnPageChangeListener(viewPagerPageChangeListener);
    }

    private final ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

        @Override
        public void onPageSelected(int position) {
            for (int i = 0; i < dotsCount; i++)
                dotsTextView[i].setTextColor(Color.GRAY);

            dotsTextView[position].setTextColor(Color.WHITE);
        }

        @Override
        public void onPageScrollStateChanged(int state) {}
    };

    protected void loadDots() {
        dotsCount = adapter.getCount();
        dotsTextView = new TextView[dotsCount];
        for (int i = 0; i < dotsCount; i++) {
            dotsTextView[i] = new TextView(getContext());
            dotsTextView[i].setText(R.string.dot);
            dotsTextView[i].setTextSize(45);
            dotsTextView[i].setTypeface(null, Typeface.BOLD);
            dotsTextView[i].setTextColor(android.graphics.Color.GRAY);
            mDotsLayout.addView(dotsTextView[i]);
        }
        dotsTextView[0].setTextColor(Color.WHITE);
    }

XML

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

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:background="#00000000"/>


    <ImageView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/introImageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <LinearLayout
        android:id="@+id/image_count"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00000000"
        android:gravity="center|bottom"
        android:orientation="horizontal"/>
</FrameLayout>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.