TextView
中的Fragment
内有ViewPager
,我希望TextView
中的文字可滚动。由于某种原因,这不起作用,textview不会滚动。
这是我尝试过的:
片段中的代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_profile_view, container, false);
about = (TextView) view.findViewById(R.id.profileView_aboutContent_textView);
about.setMovementMethod(new ScrollingMovementMethod());
return view;
}
的xml:
<TextView
android:id="@+id/profileView_aboutContent_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/profileView_age_editText"
android:layout_alignBottom="@+id/profileView_age_editText"
android:layout_marginLeft="30dp"
android:layout_toRightOf="@+id/profileView_profileName_textView"
android:scrollbars="vertical"
android:maxLines="5"
android:text="@string/provisional_about_text"
android:textColor="#0066CC" />
我知道这是有效的,因为我使用它来制作一个tetxview可滚动,这是一个不在ViewPager中的片段中的活动。当我在我的片段中尝试相同时,它不起作用。
我还尝试将setmovement方法应用于片段类中的onStart方法中的textview,但这也不起作用。我还认为textview存在TextView
id的问题,并且它返回null,因此我尝试将TextView
文本设置为setText()
;在片段中查看该类是否获得了textview id并且它实际上有效,所以我不知道为什么setmovement方法不起作用。
有人知道可能是什么问题吗?
感谢您的帮助。
答案 0 :(得分:2)
我弄明白了这个问题。 TextView是垂直滚动的,因为它跟随Pager View行为,它是从一个片段水平移动到另一个片段所以我不得不告诉Fragment类中的TextView不遵循父行为。
这是代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_profile_view, container, false);
about = (TextView) view.findViewById(R.id.profileView_aboutContent_textView);
about.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
about.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
about.setMovementMethod(new ScrollingMovementMethod());
return view;
答案 1 :(得分:0)
将滚动视图添加到布局中的textview,就像这样...
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/testText"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ScrollView>
以下是使用Viewpager工作正常的完整代码..
MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
}
activity_main.xml中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity中的ViewPagerAdapter类
private class ViewPagerAdapter extends FragmentStatePagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return new TestFragment();
}
@Override
public int getCount() {
return 3;
}
}
TestFargment.java
public class TestFragment extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View row = inflater.inflate(R.layout.activity_main, container, false);
TextView textView = (TextView)row.findViewById(R.id.profileView_aboutContent_textView);
textView.setMovementMethod(new ScrollingMovementMethod());
return row;
}
}