0

我在片段(分屏)中有一个图像和一个文本视图。我在屏幕的上半部分有图像,在屏幕的下半部分有文本视图。我需要 textview 是可滚动的。我尝试在我的文本视图周围放置一个可滚动视图,但它显示全屏且没有滚动条。在阅读了可滚动文本视图之后,我发现它有一个属性,所以我使用了“android:scrollbars="vertical"。但是,当我触摸屏幕时,即使有更多文本要显示,滚动条也不会出现。我已经实现了一个 onTouchListener 以确保屏幕被触摸是活动的,但这不会导致滚动条出现。我也读过这篇文章好几次:Making TextView scrollable on Android但我没有看到我错过了什么。是什么导致滚动条显示?当屏幕第一次出现然后消失时,它最初会显示。当我触摸片段中的文本视图时,我缺少什么让滚动条重新出现?

这是我的xml文件:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@android:color/white"
  android:orientation="vertical"
 >    
<ImageView
    android:id="@+id/bio_imageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"        
    android:background="@android:color/black"
    android:layout_weight="1"
    android:src="@drawable/bio_pic"/>   
 <TextView 
    android:id="@+id/bio_TextView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"        
    android:textSize="18sp"
    android:textColor="#000000"   
    android:scrollbars="vertical"
    android:text="@string/bio_html"/>           

 </LinearLayout>

这是代码:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
        Bundle savedInstanceState) {
    if (VERBOSE) Log.v(TAG, "+++ onCreateView +++");
    View v = inflater.inflate(R.layout.fragment_bio, parent, false);

    // Displays the title on the Action Bar
    getActivity().setTitle(R.string.bio_title); 


    final TextView mTextView = (TextView)mView.findViewById(R.id.bio_TextView);

    v.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent e) {

            //mTextView.setText(Html.fromHtml(getString(R.string.bio_html)));
            Toast.makeText(getActivity(), "Screen touched", Toast.LENGTH_SHORT).show();

            return true;
        }

    });

    mTextView.setText(Html.fromHtml(getString(R.string.bio_html)));
    setRetainInstance(true);        
return v;
}
4

1 回答 1

0

我为自己的问题找到了解决方案。不确定这是否是最佳解决方案,但效果很好。我使用了 3 个线性布局:一个主布局,一个用于我的图像,一个来自我的文本视图。我用滚动视图包围了文本视图周围的线性布局。希望这可以帮助某人。这看起来很简单,但是对于像我这样的新手来说,获得 layout_heights、weights 和 widths 的正确组合是很棘手的。

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="@android:color/white"
   android:orientation="vertical"
 >   
<LinearLayout
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_weight="1" >
 <ImageView
      android:id="@+id/bio_imageView"
      android:layout_width="match_parent"
      android:layout_height="match_parent"    
      android:background="@android:color/black"    
      android:src="@drawable/bio_pic"/>   
</LinearLayout>        
<ScrollView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_weight="1">
<LinearLayout    
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
>
<TextView 
    android:id="@+id/bio_TextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"    
    android:textSize="18sp"
    android:textColor="#000000"   
    android:scrollbars="vertical"
    android:text="@string/bio_html"/>           
</LinearLayout> 
</ScrollView>
</LinearLayout>
于 2013-08-19T23:10:25.167 回答