显示无过渡片段
Display fragment without transition
我在滚动视图中有一个片段。
加载片段时,滚动视图向下滚动到片段。
我想将片段加载到滚动视图中,但我不希望滚动视图在加载时从当前位置(顶部)向下滚动到片段。
这是我加载片段的方式:
android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(bikeFragContainer.getId(),bikeFrag);
ft.show(bikeFrag);
ft.commit();
setBikeFragData();
在我看来,滚动的原因是,ft.commit()
加载片段并移动屏幕以显示片段。
有没有什么方法可以在片段加载到滚动视图中时将片段加载到滚动视图中,而无需将滚动视图移动到片段中?
我认为答案在于找到一种方法告诉 FragmentManager
或 FragmentTransaction
只加载片段而不进行任何转换。大家有什么建议吗??
这可能是由 android:textIsSelectable
引起的。您可以尝试将以下内容添加到 ScrollView
:
android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
尽管有你的帮助,我还是找不到解决问题的完美方法。
原因是,我的方法可能不正确(在滚动视图中包含片段并期望它不会滚动)并且可能有更好的方法。
我所做的是解决我的问题,我在加载片段后立即强制滚动视图滚动到顶部。所以用户看到滚动视图非常快地向下和向上滚动一次。(我知道笨拙!)
这是我的代码:
android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(mGridContainer.getId(),bikeFrag);
ft.commit();
setBikeFrag();
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.smoothScrollTo(0, 0); // scrolls to top of scrollview
}
}, 1000);
片段交易发生后我等待一秒钟并滚动到顶部。
也许这个延迟可以减少,但为了安全起见,我把它保持为一秒。
scrollView
是 ScrollView 小部件的对象,在我的布局中。
片段和其他一些小部件位于此滚动视图内。
我在滚动视图中有一个片段。
加载片段时,滚动视图向下滚动到片段。
我想将片段加载到滚动视图中,但我不希望滚动视图在加载时从当前位置(顶部)向下滚动到片段。
这是我加载片段的方式:
android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(bikeFragContainer.getId(),bikeFrag);
ft.show(bikeFrag);
ft.commit();
setBikeFragData();
在我看来,滚动的原因是,ft.commit()
加载片段并移动屏幕以显示片段。
有没有什么方法可以在片段加载到滚动视图中时将片段加载到滚动视图中,而无需将滚动视图移动到片段中?
我认为答案在于找到一种方法告诉 FragmentManager
或 FragmentTransaction
只加载片段而不进行任何转换。大家有什么建议吗??
这可能是由 android:textIsSelectable
引起的。您可以尝试将以下内容添加到 ScrollView
:
android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
尽管有你的帮助,我还是找不到解决问题的完美方法。
原因是,我的方法可能不正确(在滚动视图中包含片段并期望它不会滚动)并且可能有更好的方法。
我所做的是解决我的问题,我在加载片段后立即强制滚动视图滚动到顶部。所以用户看到滚动视图非常快地向下和向上滚动一次。(我知道笨拙!)
这是我的代码:
android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(mGridContainer.getId(),bikeFrag);
ft.commit();
setBikeFrag();
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.smoothScrollTo(0, 0); // scrolls to top of scrollview
}
}, 1000);
片段交易发生后我等待一秒钟并滚动到顶部。
也许这个延迟可以减少,但为了安全起见,我把它保持为一秒。
scrollView
是 ScrollView 小部件的对象,在我的布局中。
片段和其他一些小部件位于此滚动视图内。