我正在使用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) 我正在使用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) 当使用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) 我对ViewPager有一些问题,它为三个标签中的每一个加载片段.在第一个片段中,有一个带有ListView的垂直LinearLayout.列表视图是动态加载的项目,但是当项目计数超过屏幕大小时,它不会滚动显示其余项目.
我的猜测是片段(设置为匹配父级的高度)被父布局中的tabview(DrawerLayout内的CoordinatorLayout)向下推.如何在ViewPager中弥补TabView高度或强制片段将其大小限制为剩余的屏幕高度?
这是应用程序的图像:

这是我的代码:
<?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)
<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) 我已按照此链接实施使用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
经过广泛搜索后,似乎没有人对同样的行为感兴趣.如果我错过了,请指出适当的地方.
问题如下:我在主活动xml中有一个协调器布局.在协调器布局内部有一个视图寻呼机.在我放入视图分页器的三个片段中的两个片段中,有一些循环视图触发了协调器布局中工具栏的隐藏.但是第三个片段没有循环视图.问题在于,当显示工具栏时,第三个片段被绘制得比它应该低,将ui的一部分隐藏在屏幕的下边缘下方.如果隐藏工具栏,则所有内容都会正常显示
所以问题是 - 如何以编程方式隐藏工具栏?例如,当用户滑动到视图寻呼机中的第三个片段时?
如果你认为有更好的方法 - 我也很高兴听到这个.谢谢!
android android-layout android-viewpager android-toolbar android-coordinatorlayout
viewPager.setClipToPadding(false);
viewPagerMusicCategory.setPadding(width/3, 0, width /3, 0);
viewPagerMusicCategory.setPageMargin(40));
Run Code Online (Sandbox Code Playgroud)
我通过上面的代码获得了下一个和上一个预览 但现在我需要中心页面的缩放效果.

提前致谢
我正在尝试制作一个图像寻呼机,根据我查找的所有教程,看来它已经正确完成了,但是我得到的只是一个空白屏幕。适配器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) 我有一个自定义ViewPager,就像一个Carousel,我希望能够在一个上显示多个页面.为此,我们有两个解决方案:
第一个解决方案工作得很好,但我希望能够精确确定当前页面的百分比.问题在于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中使用标签布局时,它总是会加载触摸它的标签,即之前的标签和标签,因此当您翻页时它会被加载.
但是,我从服务器加载了大量的内容和图像,这会导致大量的数据和内存使用,我经常会得到OOM errors,我正在使用Glide高效地显示图像.
基本上我需要知道3件事:
clear/recycle/delete在到达新页面以清除内存后如何使用旧选项卡