标签: android-viewpager

viewPager.setOnPageChangeListener无法正常工作

我正在使用Android Studio开发针对API级别22的应用程序,并使用compileSdkVersion级别为23.当我尝试ViewPager.OnPageChangeListener()在下面的代码中实现时,它给出了

不推荐使用setOnPageChangeListener.

 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {}
Run Code Online (Sandbox Code Playgroud)

我想要做的viewPager.setOnPageChangeListener()是:

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

        }

        @Override
        public void onPageSelected(int position) {
            txtPropertyOverviewImageCount.setText(position + "/" + GalleryImages.length);
            //GalleryImage have no of item is same size of viewpager
            //i want O/P like this 
            // 1/8
            // 2/8
            // 3/8
            LogUtils.Log_e("CurrentPage", position + "");
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });
Run Code Online (Sandbox Code Playgroud)

android android-viewpager android-studio

1
推荐指数
2
解决办法
1万
查看次数

在Android中更改数据时,查看寻呼机的第一个和第二个片段数据是不是在更新?

我正在使用view pager(动态)来显示来自服务的数据.它工作正常但每当我再次调用服务时,视图寻呼机中的数据需要刷新和更新新数据(来自服务).

视图寻呼机中的所有片段都使用新数据进行刷新,但视图寻呼机的前两个片段未使用新数据进行更新,这两个片段(第一个和第二个)仅显示以前的数据.请任何人帮助我.

我的代码:

RechargeplansActivity.java:

public class RechargeplansActivity  extends FragmentActivity /*implements RechargePlansFragment.UserInterface*/ {
    static final String TAG = RechargeplansActivity.class.getSimpleName();
    SectionsPagerAdapter mSectionsPagerAdapter;
    ViewPager mViewPager;
    Intent intent;
    private ArrayList<String> mPlanNamesList;
    private ArrayList<BrowsePlan> mBrowsePlansList;
    TextView tx_network;
    Dialog message_dialg;
    Context context;
    String operatorid,circleid;

    Map<String, ArrayList<BrowsePlan>> mBrowsePlansMap;

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

        context = this;

        intent = getIntent();
        setPlan_types(new ArrayList<String>());
        setBrowseplans(new ArrayList<BrowsePlan>());
        mBrowsePlansMap = new HashMap<String, ArrayList<BrowsePlan>>();
        //db = DatabaseHandler.getInstance(getApplicationContext());
        initUI();




        operatorid=intent.getStringExtra("op_id");
        circleid=intent.getStringExtra("cir_id");



        executeBrowsePlans();
        tx_network.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) …
Run Code Online (Sandbox Code Playgroud)

android dynamic android-viewpager fragmentpageradapter

1
推荐指数
1
解决办法
5763
查看次数

Android Wear:使用FragmentPagerAdapter的WearableActivity

当使用WearableActivity你不能达到getSupportFragmentManager()FragmentPagerAdapter要求,所以你需要使用getFragmentManager().

活动

public MyWearActivity extends WearableActivity {

    public ArrayList<Fragment> mFragments;
    public ArrayList<String> mTitles;
    public ViewPager mViewPager;
    public PageFragmentPagerAdapter mPagerAdapter;

    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.main);
        fragments = new ArrayList<>();
        mTitles = new ArrayList<>();
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
Run Code Online (Sandbox Code Playgroud)

        mPagerAdapter = new PageFragmentPagerAdapter(getFragmentManager()); <-- PROBLEM
Run Code Online (Sandbox Code Playgroud)

        // More code
    }
}
Run Code Online (Sandbox Code Playgroud)

寻呼机适配器

public class PageFragmentPagerAdapter extends FragmentPagerAdapter {

    public PageFragmentPagerAdapter(FragmentManager fm) {
Run Code Online (Sandbox Code Playgroud)

        super(fm); <-- PROBLEM
Run Code Online (Sandbox Code Playgroud)

    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager wear-os

1
推荐指数
1
解决办法
975
查看次数

调整viewpager中的视图大小,弥补标签高度

我对ViewPager有一些问题,它为三个标签中的每一个加载片段.在第一个片段中,有一个带有ListView的垂直LinearLayout.列表视图是动态加载的项目,但是当项目计数超过屏幕大小时,它不会滚动显示其余项目.

我的猜测是片段(设置为匹配父级的高度)被父布局中的tabview(DrawerLayout内的CoordinatorLayout)向下推.如何在ViewPager中弥补TabView高度或强制片段将其大小限制为剩余的屏幕高度?

这是应用程序的图像: 请参阅操作系统的滚动分隔符,该分隔符几乎不显示在导航栏后面

这是我的代码:

Activity_Home.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="@dimen/appbar_padding_top"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/AppTheme.PopupOverlay">

            </android.support.v7.widget.Toolbar>

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    </android.support.design.widget.CoordinatorLayout>


    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_home"
        app:menu="@menu/activity_home_drawer" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

fragment_account.xml

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/accounts_list"
    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="com.mycompany.myapp.fragments.AccountsFragment" />
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-viewpager

1
推荐指数
1
解决办法
2162
查看次数

使用ViewPagerAdapter在TabLayout中未调用片段onCreateView方法

我已按照此链接实施使用Tabs的 tablayout Android Material Design

现在我做了什么,我使用片段代替Activity for tablayout.

以下是代码: -

public class HopitalTabLayoutFragment extends Fragment {

private TabLayout tabLayout;
private ViewPager viewPager;

public HopitalTabLayoutFragment() {

}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_hopital_tab_layout, container, false);

    viewPager = (ViewPager)view. findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout)view. findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

    return view;
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

    adapter.addFragment(new OneFragment(), "ONE");
    adapter.addFragment(new TwoFragment(), "TWO");
    adapter.addFragment(new ThreeFragment(), "THREE");

    viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager navigation-drawer android-tablayout

1
推荐指数
1
解决办法
2380
查看次数

使用协调器布局以编程方式隐藏工具栏

经过广泛搜索后,似乎没有人对同样的行为感兴趣.如果我错过了,请指出适当的地方.

问题如下:我在主活动xml中有一个协调器布局.在协调器布局内部有一个视图寻呼机.在我放入视图分页器的三个片段中的两个片段中,有一些循环视图触发了协调器布局中工具栏的隐藏.但是第三个片段没有循环视图.问题在于,当显示工具栏时,第三个片段被绘制得比它应该低,将ui的一部分隐藏在屏幕的下边缘下方.如果隐藏工具栏,则所有内容都会正常显示

所以问题是 - 如何以编程方式隐藏工具栏?例如,当用户滑动到视图寻呼机中的第三个片段时?

如果你认为有更好的方法 - 我也很高兴听到这个.谢谢!

android android-layout android-viewpager android-toolbar android-coordinatorlayout

1
推荐指数
1
解决办法
2758
查看次数

如何创建具有上一页和下一页预览的ViewPager,并将一个从预览中缩放的中心

viewPager.setClipToPadding(false);
viewPagerMusicCategory.setPadding(width/3, 0, width /3, 0);
viewPagerMusicCategory.setPageMargin(40));
Run Code Online (Sandbox Code Playgroud)

我通过上面的代码获得了下一个和上一个预览 但现在我需要中心页面的缩放效果. 例如

提前致谢

android android-viewpager android-pagetransformer

1
推荐指数
1
解决办法
1803
查看次数

PagerAdapter总是返回空白

我正在尝试制作一个图像寻呼机,根据我查找的所有教程,看来它已经正确完成了,但是我得到的只是一个空白屏幕。适配器instantiateItem方法的断点告诉我,正在调用它,并且所有正确的信息都已放入视图中,甚至可以滑动,但是我仍然看不到任何东西。这是我的代码

activity_photos.xml

<RelativeLayout> // I'm not including that code, irrelevant.
<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/imagePager"
    android:background="@android:color/black"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

viewpager_itemx.xml

<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="0dp"
        android:layout_weight="1"
        android:id="@+id/imageView"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageLabel"
        android:textColor="@android:color/white"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

PhotosActivity.java

    final String[] images = getResources().getStringArray(R.array.tips_images);
    final String[] labels = getResources().getStringArray(R.array.tips_text);

    final ViewPager viewPager = (ViewPager) findViewById(R.id.imagePager);
    final ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(PhotoTipsActivity.this, images, labels);

    viewPager.setAdapter(viewPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

最后是ViewPagerAdapter.java

公共类ViewPagerAdapter扩展了PagerAdapter {

private Context context;
private String[] images;
private String[] labels;

public ViewPagerAdapter(Context context, String[] images, String[] labels) …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager android-pageradapter

1
推荐指数
1
解决办法
335
查看次数

自定义ViewPager中心当前项目,在适配器中具有自定义getPageWidth

我有一个自定义ViewPager,就像一个Carousel,我希望能够在一个上显示多个页面.为此,我们有两个解决方案:

  • 使用边距setPageMargin()方法
  • 或者我们可以使用覆盖我的ViewPager适配器的getPageWidth方法.

第一个解决方案工作得很好,但我希望能够精确确定当前页面的百分比.问题在于getPageWidth解决方案,我的当前页面在左侧移动.这是合乎逻辑的,因为她只占她以前尺寸的80%.所以我试图覆盖我的自定义ViewPager的scrollTo函数,如下所示:

 @Override
    public void scrollTo(int x, int y) {
        x = (int) (x - (getWidth() - getWidth()*getAdapter().getPageWidth(getCurrentItem()))/2);
        super.scrollTo(x, y);
    }
Run Code Online (Sandbox Code Playgroud)

它正在工作,但我不能像以前一样滚动,它只是表现得很奇怪,不要朝着好的方向前进,不要按照手指......有没有任何解决方案可以让我有一个工作滚动和居中当前页面 ?

这是我的适配器:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

import java.util.ArrayList;

public class CarouselAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {
    private ArrayList<Entity> mData = new ArrayList<>();
    private ScaledRelativeLayout cur = null, next = null;

    private float scale;
    private MainActivity context;
    private FragmentManager fragmentManager;

    public CarouselAdapter(MainActivity context, FragmentManager fragmentManager, ArrayList<Entity> mData) {
        super(fragmentManager);
        this.fragmentManager = fragmentManager;
        this.context …
Run Code Online (Sandbox Code Playgroud)

android centering android-custom-view android-viewpager

1
推荐指数
1
解决办法
3948
查看次数

停止Android TabLayout自动加载下一页

我已经意识到在Android中使用标签布局时,它总是会加载触摸它的标签,即之前的标签和标签,因此当您翻页时它会被加载.

但是,我从服务器加载了大量的内容和图像,这会导致大量的数据和内存使用,我经常会得到OOM errors,我正在使用Glide高效地显示图像.

基本上我需要知道3件事:

  1. 如何停止选项卡布局加载除当前页面之外的任何页面
  2. clear/recycle/delete在到达新页面以清除内存后如何使用旧选项卡
  3. 如何在返回时始终刷新选项卡

tabs android view android-viewpager android-tablayout

1
推荐指数
1
解决办法
2567
查看次数