在我的程序中,我显示 GridView,当用户点击任何显示 ViewPager 的网格项目时
在这里我想知道,如何显示总位置的当前位置,就像我们通常在图片库中看到的那样
例如:我想显示 ViewPager 的当前位置以及 textView 中的网格项目总数
3 of 11
Run Code Online (Sandbox Code Playgroud)
这就是我想要得到的:

MainActivity.java:GridView
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set title for the GridView
setTitle("GridView");
// Get the view from grid_view.xml
setContentView(R.layout.grid_view);
// Set the images from ImageAdapter.java to GridView
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
// Listening to GridView item click
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// …Run Code Online (Sandbox Code Playgroud) 我有这个布局
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/header_cover_image"
android:layout_width="match_parent"
android:layout_height="150dp"
android:scaleType="centerCrop"
android:background="@color/com_facebook_button_background_color_pressed" />
<refractored.controls.CircleImageView
android:id="@+id/imageProfile"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_below="@+id/header_cover_image"
android:layout_centerHorizontal="true"
android:layout_marginTop="-60dp"
android:layout_gravity="center_horizontal"
android:elevation="5dp"
android:padding="20dp"
android:scaleType="centerCrop" />
<RelativeLayout
android:id="@+id/profile_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/header_cover_image"
android:background="#ebca0707"
android:elevation="4dp"
android:paddingBottom="24dp">
<ImageView
android:id="@+id/add_friend"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
android:src="@drawable/played" />
<ImageView
android:id="@+id/drop_down_option_menu"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:src="@drawable/wins"
android:layout_width="30dp"
android:layout_toLeftOf="@+id/drop_down_option_menu"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp" />
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="76dp"
android:textColor="#fff"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/userStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/user_name"
android:text="Status"
android:textColor="#fff"
android:textSize="14sp"
android:layout_marginLeft="16dp"
android:layout_marginTop="15dp"
android:layout_centerHorizontal="true" />
</RelativeLayout> …Run Code Online (Sandbox Code Playgroud) 我正在尝试keyboard使用此代码禁用左右两侧的功能,但viewPager按左右键会button更改寻呼机的状态。
edComment.setOnEditorActionListener(
new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS
|| actionId == EditorInfo.IME_FLAG_NAVIGATE_NEXT
|| actionId == EditorInfo.IME_ACTION_PREVIOUS
|| actionId == EditorInfo.IME_ACTION_NEXT
) {
return false;
}
// Return true if you have consumed the action, else false.
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
当我尝试在 Android N 的 View Pager 中加载一组图像时遇到问题(检查 Samsung S6)。
java.lang.RuntimeException:画布:尝试绘制太大(132710400字节)位图。
图片尺寸为960*720,大小为64k,View Pager数量为4
现在我将所有图像放在普通的“drawable”文件夹中。我尝试将所有图像替换为“drawable-xxhdpi”,但问题仍然存在。
我想在我的应用程序中设置一个 viewPager 和寻呼机适配器,但我无法实现它,因为我不能使用 fragmentManager。我得到以下错误:
“错误:(45, 38) 分类器‘FragmentManager’没有伴随对象,因此必须在此处初始化”
我的代码是:
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
private lateinit var pagerAdapter: mPagerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
pagerAdapter = mPagerAdapter(FragmentManager) // err is here
viewPager.adapter = pagerAdapter
}
class mPagerAdapter(fragmentManager: FragmentManager) :
FragmentStatePagerAdapter(fragmentManager) {
// 2
override fun getItem(position: Int): Fragment {
when (position) {
0 -> return Tab1() as Fragment
1 -> return Tab2() as Fragment
2 -> return Tab3() as Fragment
}
return Tab1() as Fragment
}
// 3
override fun …Run Code Online (Sandbox Code Playgroud) 我有一个带有一些值的视图寻呼机,回收器视图上方的回收器视图的计数相同(就像一个tablayout)
我已经使用 snap helper 实现了该功能,并且一切正常,唯一我想要的就是我想将 recyclerview 的滚动与 viewpager 滚动同步,这是我无法实现的。
以下是我想要达到的目标

但我得到的是如下

我覆盖了视图页面的滚动但没有用
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
myRecyler..scrollBy(positionOffsetPixels,0);
}
Run Code Online (Sandbox Code Playgroud)
但它的奇怪行为我也尝试过scrollToPositionWithOffset
layoutManagerStart.scrollToPositionWithOffset(position,positionOffsetPixels);
Run Code Online (Sandbox Code Playgroud)
但都失败了,我使用 snap helpers 所以所选项目将位于第一个位置。
任何人都可以帮助我达到上述效果。
android scrollview android-layout android-viewpager android-recyclerview
我有几个用ViewPager. 我在 MainActivity 的方法中addOnPageChangeListener添加了一个,它给出了所选片段的位置。ViewPageronCreate
尽管我通过声明 a 来防止片段自行销毁setOffscreenPageLimit,但我仍然没有弄清楚如何从 MainActivity 访问片段,因为简单地使用findViewById会返回空对象异常。
我想做的事:
我想访问片段的元素,例如布局和滚动视图,OnPageListener在ViewPager:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int i) {
if(i == 0) {
// Do something with the first fragment.
} else if(i == 1) {
// Do something with the second fragment.
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用ViewPager:FragmentPagerAdapter
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我有一个视图,它有一个 tablayout 激活 viewpager,在查看页面时它工作正常,但是如果我单击该视图上的一个项目然后返回到过去的屏幕,我会得到:
Java.Lang.IllegalStateException:FragmentManager 已经在执行事务
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
CurrentActivity = Activity;
var view = inflater.Inflate(Resource.Layout.fragment_directory, null);
_tabLayout = view.FindViewById<TabLayout>(Resource.Id.directory_tabs);
_viewPager = view.FindViewById<ViewPager>(Resource.Id.directory_pager);
SetTabLayout();
SetViewPager();
return view;
}
private void SetTabLayout()
{
var userTab = _tabLayout.NewTab();
userTab.SetText("Users");
var orgUnitsTab = _tabLayout.NewTab();
orgUnitsTab.SetText("Organizations");
_tabLayout.AddTab(userTab);
_tabLayout.AddTab(orgUnitsTab);
_tabLayout.TabGravity = TabLayout.GravityFill;
}
private void SetViewPager()
{
var pagerAdapter = new DirectoryPagerAdapter(FragmentManager, _tabLayout.TabCount);
_viewPager.Adapter = pagerAdapter;
_viewPager.AddOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(_tabLayout));
}
Run Code Online (Sandbox Code Playgroud)
不确定它是否有所作为,但是当我离开这个视图时,我从一个片段变成了一个活动。
我已经使用 TabLayout 设置了 ViewPager2,以便通过滑动或单击选项卡来切换片段。我知道的问题是我的碎片没有占据所有空间,并且底部有一个空白空间,我无法滑动。我怎样才能让我的碎片填满这个空间?
编辑:我认为我的问题与我试图将我的viewpager加载到另一个片段中这一事实有关。我将代码复制到一个新项目中,而不是将代码加载到片段中,而是将其加载到主活动中,并且它已经起作用了。在片段中加载视图分页器是一种不好的做法吗?
我已经像这样更改了我的ProfileFragment.kt但它仍然无法正常工作:
class ProfileFragment : Fragment() {
private lateinit var tabsText: List<String>
private val adapter by lazy {
ViewPagerAdapter(childFragmentManager, lifecycle)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
tabsText = listOf<String>(getString(R.string.user_info),
getString(R.string.saved_recipes), getString(R.string.shopping_list))
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_profile, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
pager.adapter = adapter
TabLayoutMediator(tabs, pager) { tab, position ->
tab.text = tabsText.get(position)
}.attach()
}
} …Run Code Online (Sandbox Code Playgroud) 我认为 FlatList 的 pagingEnabled={true} 与 viewpager 的贡献相同。两者有何区别?
android-viewpager react-native react-native-ios react-native-flatlist
android ×8
java ×2
kotlin ×2
bitmap ×1
canvas ×1
fragment ×1
react-native ×1
scrollview ×1
xml ×1