为什么我无法点击可滚动的Textview?

时间:2018-04-20 01:34:47

标签: android android-fragments onclicklistener

我制作了一些包含Textviews的片段。 2 Textviews只是Textviews,其他是可滚动的Textviews。 我在MainActivity上使用了片段。 我希望片段的整个区域是可点击的。 但是,如果我单击可滚动的Textviews区域,它就不起作用了。 当我单击不可滚动的Textviews时,它可以工作。 为什么我不能点击它们?

以下是我的代码的一部分。

1。 fragment.xml之

<TextView
    android:id="@+id/tv_title_ins_time"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.7"
    android:paddingStart="10dp"
    android:gravity="center_vertical"
    android:text="@string/instruction_time_receipt"
    android:background="@color/MainTitleBackgroundColor"
    android:textColor="@color/WhiteTextColor"
    android:textSize="@dimen/ll_instruction_summary_title_text_size"/>

<TextView
    android:id="@+id/tv_main_ins_time"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1.3"
    android:scrollbars="vertical" ->scroll
    android:paddingStart="10dp"
    android:textStyle="bold"
    android:background="@drawable/input02"
    android:textColor="@color/MainInputTextColor"
    android:textSize="@dimen/ll_instruction_summary_text_size" />

<TextView
    android:id="@+id/tv_title_ins_loc"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.7"
    android:paddingStart="10dp"
    android:gravity="center_vertical"
    android:text="@string/instruction_disaster_location"
    android:background="@color/MainTitleBackgroundColor"
    android:textColor="@color/WhiteTextColor"
    android:textSize="@dimen/ll_instruction_summary_title_text_size"/>

<TextView
    android:id="@+id/tv_main_ins_loc"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2.3"
    android:scrollbars="vertical"
    android:background="@drawable/input02"
    android:paddingStart="10dp"
    android:textStyle="bold"
    android:textColor="@color/MainInputTextColor"
    android:textSize="@dimen/ll_instruction_summary_text_size" />

2。 Fagment.java

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ....

    tvTime = (TextView) mView.findViewById(R.id.tv_main_ins_time);
    tvLocation = (TextView) mView.findViewById(R.id.tv_main_ins_loc); 

    tvTime.setMovementMethod(new ScrollingMovementMethod());
    tvLocation.setMovementMethod(new ScrollingMovementMethod());
}

第3。 main.xml中

...  <fragment
            android:id="@+id/fragment_instruction_summary"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="3.85"
            android:name="(myPackageName).Fragment"
            tools:layout="@layout/fragment" >
        </fragment> ....

4。 MainActivity.java

findViewById(R.id.fragment_instruction_summary).setOnClickListener(onClickListener);

请帮帮我。 我试图将片段放在linearLayout中并设置单击Listener to linearlayout,但结果相同。

1 个答案:

答案 0 :(得分:0)

使用布局时,滚动效果很好。尝试将TextView包装在另一个布局中。像这样:

<TextView
    android:id="@+id/tv_title_ins_time"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.7"
    android:paddingStart="10dp"
    android:gravity="center_vertical"
    android:text="@string/instruction_time_receipt"
    android:background="@color/MainTitleBackgroundColor"
    android:textColor="@color/WhiteTextColor"
    android:textSize="@dimen/ll_instruction_summary_title_text_size"/>

<TextView
    android:id="@+id/tv_title_ins_loc"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.7"
    android:paddingStart="10dp"
    android:gravity="center_vertical"
    android:text="@string/instruction_disaster_location"
    android:background="@color/MainTitleBackgroundColor"
    android:textColor="@color/WhiteTextColor"
    android:textSize="@dimen/ll_instruction_summary_title_text_size"/>

<ScrollView 
    android:id="@+id/scroll"
    android:layout_height="your_preference"
    android:layout_width="your_preference">

        <LinearLayout
            android:orientation="vertical"
            android:layout_height="your_preference"
            android:layout_width="your_preference">
        <TextView
            android:id="@+id/tv_main_ins_time"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1.3"
            android:paddingStart="10dp"
            android:textStyle="bold"
            android:background="@drawable/input02"
            android:textColor="@color/MainInputTextColor"
            android:textSize="@dimen/ll_instruction_summary_text_size" />

        <TextView
            android:id="@+id/tv_main_ins_loc"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2.3"
            android:background="@drawable/input02"
            android:paddingStart="10dp"
            android:textStyle="bold"
            android:textColor="@color/MainInputTextColor"
            android:textSize="@dimen/ll_instruction_summary_text_size" />

    </LinearLayout>
</ScrollView>

在你的片段中:

ScrollView scrollView;

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ....

scrollView = (ScrollView) mView.findViewById(R.id.scroll);
scrollView.setOnClickListener(new View.OnClickListener() {
  // do anything
 });

tvTime = (TextView) mView.findViewById(R.id.tv_main_ins_time);
tvLocation = (TextView) mView.findViewById(R.id.tv_main_ins_loc);
tvTime.setOnClickListener(new View.OnClickListener(){
     // do anything
});
tvLocation.setOnClickListener(new View.OnClickListener(){
     // do anything
});

tvTime.setMovementMethod(new ScrollingMovementMethod());
tvLocation.setMovementMethod(new ScrollingMovementMethod());
}