Android 通过片段水平滚动,也可以通过按钮访问片段?
我一直绞尽脑汁想解决的问题。解释我想要什么的最简单方法是在我起草的png中: 因此,我在第一个屏幕上有4个TextView&ImageView视图,如果您滑动到其他屏幕,我希望能够将我带到具有相同动画效果的屏幕。有很多应用程序可以做到这一点,但我自己却不知道如何实现它。显然,我必须首先使用OnClickListener使ImageView和TextView可单击。但是我在里面做什么呢 我已经使用片段设置了水平滚动,但这最后一块拼图是我正在努力的。我想让用户可以选择如何浏览我的应用程序,一些用户可以点击ImageView/TextView为他们刷卡,或者一些用户可以直接刷卡进入其他片段 希望我已经正确地解释了这一点。事实上,Play Store做了我想做的事情,除了它使用标签(从顶级免费到顶级付费等)。这是我不想使用的(标签)。我希望我可以通过设置在TextView和ImageView上的onclick来复制它 我真的很感激任何帮助!我已经使用支持库完成了这项工作,所以如果这有什么不同的话,它不仅仅是3.0+版本Android 通过片段水平滚动,也可以通过按钮访问片段?,android,button,onclick,android-fragments,Android,Button,Onclick,Android Fragments,我一直绞尽脑汁想解决的问题。解释我想要什么的最简单方法是在我起草的png中: 因此,我在第一个屏幕上有4个TextView&ImageView视图,如果您滑动到其他屏幕,我希望能够将我带到具有相同动画效果的屏幕。有很多应用程序可以做到这一点,但我自己却不知道如何实现它。显然,我必须首先使用OnClickListener使ImageView和TextView可单击。但是我在里面做什么呢 我已经使用片段设置了水平滚动,但这最后一块拼图是我正在努力的。我想让用户可以选择如何浏览我的应用程序,一些用户可
编辑:事实上,在做一些研究时,我遇到了一个叫做“碎片交易”的东西。这样做对吗?我只是偶然发现了它,所以我不完全理解。您要找的是一个
查看页面。我制作了一个小示例,向您展示如何实现所需的行为:
private class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return StarterFragment.newInstance(R.id.viewPagerIdFromTheLayout);
} else {
return NormalFragment.newInstance(position);
}
}
@Override
public int getCount() {
return 5;
}
}
public static class StarterFragment extends ListFragment {
public static StarterFragment newInstance(int pagerId) {
StarterFragment sf = new StarterFragment();
Bundle args = new Bundle();
args.putInt("pagerId", pagerId);
sf.setArguments(args);
return sf;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
((ViewPager) getActivity().findViewById(
getArguments().getInt("pagerId"))).setCurrentItem(position,
true);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, new String[] { "None",
"First Page", "Second Page", "Third Page", "Forth Page" }));
}
}
public static class NormalFragment extends Fragment {
public static NormalFragment newInstance(int position) {
NormalFragment nf = new NormalFragment();
Bundle args = new Bundle();
args.putInt("position", position);
nf.setArguments(args);
return nf;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TextView tv = new TextView(getActivity());
tv.setText("Fragment no." + getArguments().getInt("position"));
return tv;
}
}
私有类MyAdapter扩展了FragmentPagerAdapter{
公共MyAdapter(FragmentManager fm){
超级(fm);
}
@凌驾
公共片段getItem(int位置){
如果(位置==0){
返回StarterFragment.newInstance(R.id.viewPagerIdFromTheLayout);
}否则{
返回NormalFragment.newInstance(位置);
}
}
@凌驾
public int getCount(){
返回5;
}
}
公共静态类StarterFragment扩展了ListFragment{
公共静态实例(int pagerId){
StarterFragment sf=新的StarterFragment();
Bundle args=新Bundle();
参数putInt(“pagerId”,pagerId);
sf.setArguments(args);
返回sf;
}
@凌驾
public void onListItemClick(列表视图l、视图v、整数位置、长id){
((ViewPager)getActivity().findViewById(
getArguments().getInt(“pagerId”)).setCurrentItem(位置,
正确的);
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
setListAdapter(新的ArrayAdapter(getActivity()),
android.R.layout.simple_list_item_1,新字符串[]{“无”,
“第一页”、“第二页”、“第三页”、“第四页”});
}
}
公共静态类NormalFragment扩展了片段{
公共静态实例(int位置){
NormalFragment nf=新的NormalFragment();
Bundle args=新Bundle();
参数putInt(“位置”,位置);
nf.setArguments(args);
返回nf;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
TextView tv=新的TextView(getActivity());
tv.setText(“片段编号”+getArguments().getInt(“位置”);
返回电视;
}
}
代码是这样的。您可以使用上面看到的适配器创建一个ViewPager
。在这个ViewPager
中,您将有两种类型的片段
,第一种带有所有方向按钮
,另一种类型是要滚动到的普通片段
。为了简单起见,我使用了一个列表片段
,您可以使用自己的布局和按钮
,您可以轻松地调整代码。对于此Fragment
,您将从FragmentActivity
传递ViewPager
的id,以供以后使用。当用户从第一个片段中单击其中一个按钮时,然后在该按钮的onClick
方法中,您将使用getActivity()
和findViewById
查找查看页面
,并使用方法setCurrentItem(位置,true)
滚动到该片段
。由于ViewPager
的原因,如果您“滚动”到片段3,则仍然可以在片段之间手动滑动,是否要查看动画中的其他两个片段?@LuksProg:是的,我希望如此。您确定您不是在寻找ViewPager
()?它将允许您在片段之间滑动,您可以轻松地使用按钮移动到某个页面,即使是平滑的滚动。@Luksprog:我已经通过FragmentPagerAdapter设置了水平滚动,所以我实现了部分视图寻呼机。每一页都是一个片段。我希望有一些代码可以放在onClick中,让我滑到一个特定的片段中。很抱歉,这让我很痛苦,但这确实让人困惑。也许这只是因为我现在的代码有了很大的改变。这就是我现在的参考:我的所有片段都是独立的类,然后我在我的FragmentActivity中调用它们。显然,我会继续阅读你的代码,看看我能学到什么。@RED_u你为什么要使用片段的数组列表
?您是否计划更改查看页面
中的片段数
?您需要为第一个片段设置一个bundle(当您实例化片段时)(我假定为MainActivity),并将ViewPager`的id
(R.id.mysixpanelpager)传递给它,就像我在