Текстовая прокрутка текста не работает внутри RecyclerView - PullRequest
0 голосов
/ 26 июня 2019

Я сделал простое приложение для проверки, я могу прокручивать текст внутри TextView, все работает отлично: когда есть 4 или более строк текста, виден только 3 белья (высота textView составляет 3 строки), чтобы увидеть 4пользователь-строка может прокручивать textView.Если текст содержит всего 1 или 2 строки, представление текста становится короче (высота становится короче - 1 или 2 строки).

Код Котлина в тестовом проекте:

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    text_view.setMovementMethod(ScrollingMovementMethod.getInstance())
    text_vie.setMovementMethod(ScrollingMovementMethod.getInstance())

}
}

xmlтестируемый код:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    app:cardCornerRadius="8dp"
    android:layout_marginBottom="4dp"
    android:layout_height="wrap_content">
    <LinearLayout android:layout_width="match_parent"
          android:layout_height="wrap_content"
        android:orientation="vertical">
<TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="false"
        android:maxLines="3"
        android:text="123"
        android:scrollbars="vertical"
>
</TextView>

<TextView
        android:id="@+id/text_vie"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="3"
        android:text="123\n32\n32\n45\n565\4545"
        android:scrollbars="vertical"
>
</TextView>

</LinearLayout>
</android.support.constraint.ConstraintLayout>

Но тогда я использую тот же код внутри моего основного проекта (есть recyclewView), он просто не работает.Как я могу решить эту проблему?

Код моего основного проекта в Котлине (ScrollingMovementMethod.getInstance () находится внутри функции «fillOfView»):

class RecyclerViewOfEachQuestion(var cursor: Cursor, val context: Context, val listTitle: String) : RecyclerView.Adapter<RecyclerViewOfEachQuestion.ViewHolderHelper>() {
val db = DataBaseOfPersonalTest(context)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolderHelper {
    val inflater = LayoutInflater.from(context)
    val view = inflater.inflate(R.layout.recycler_view_question, parent, false)
    return ViewHolderHelper(view)
}

override fun getItemCount(): Int {
return cursor.count
    TODO("написать код чтобы можно былобы пролистывать textView вниз на случай если там много строк")
}

override fun onBindViewHolder(holder: ViewHolderHelper, position: Int) {
    cursor.moveToPosition(position)
    holder.fillingOfView(cursor.getString(cursor.getColumnIndex(Values.DB_QUESTION)), cursor.getString(cursor.getColumnIndex(Values.DB_ANSWER)))
}


inner class ViewHolderHelper(itemView: View) : RecyclerView.ViewHolder(itemView){

    init {
        itemView.edit.setOnClickListener {
            //make dialog of question deleting and editing if requared
            val inputHelper = InputHelper(context)
            val builder = AlertDialog.Builder(context)
            val layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
            val view = layoutInflater.inflate(R.layout.dialog_edit_question, null)
            view.questionInEdit.setText(itemView.question.text.toString())

            view.answerInEdit.setText(itemView.answer.text.toString())
            builder.setPositiveButton(R.string.save, { dialogInterface: DialogInterface, i: Int ->})
            builder.setNeutralButton(R.string.cancel, { dialogInterface: DialogInterface, i: Int -> })
            builder.setNegativeButton(R.string.delete, { dialogInterface: DialogInterface, i: Int ->
                deleteQuestionFromRecycler(itemView.question.text.toString(), itemView.answer.text.toString())
            })
            //TODO("hide keyboard after button press")
            builder.setView(view)
            val customBuilder = builder.create()
            customBuilder.show()
            customBuilder.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {

                   if(inputHelper.checksIfEmpty(view.questionInEdit)==false){
                       customBuilder.dismiss()
                       updateQuestionRecycler(itemView.question.text.toString(), itemView.answer.text.toString(), view.questionInEdit.text.toString(), view.answerInEdit.text.toString())
                }
            }

        }
    }

    fun fillingOfView(quest: String,answ: String){
        itemView.question.text = quest
        itemView.answer.text=answ
        itemView.question.movementMethod=ScrollingMovementMethod.getInstance()
        itemView.answer.movementMethod=ScrollingMovementMethod.getInstance()

    }
}

fun addToRecyclerNew(newCursor: Cursor){
    cursor=newCursor
    cursor.moveToLast()
    notifyItemInserted(cursor.position)
}

fun deleteQuestionFromRecycler(question:String, answer: String){
    db.deleteInfo(listTitle, question, answer)
    updateCursor(db.returnWholeList(listTitle))
    //TODO("make UNDO fundtion for deleted questions")
}

fun updateCursor(newCursor: Cursor){
    cursor = newCursor
    notifyDataSetChanged()
}

fun updateQuestionRecycler(oldQuestion: String, oldAnswer: String, newQuestion: String, newAnswer: String){
    db.updateQuestion(listTitle,oldQuestion, oldAnswer, newQuestion, newAnswer)
    updateCursor(db.returnWholeList(listTitle))
}

}

Мой xml-код основного проекта:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    app:cardCornerRadius="8dp"
    android:layout_marginBottom="4dp"
    android:layout_height="wrap_content">

<LinearLayout android:layout_width="match_parent"
              android:layout_height="match_parent">
    <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_weight="10"
            android:layout_height="wrap_content">


        <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxLines="3"
                android:scrollbars="vertical"
                android:layout_marginBottom="4dp"
                android:id="@+id/question"/>


        <View
                android:id="@+id/divider"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="?android:attr/listDivider"
        />
        <TextView
                android:layout_width="match_parent"
                android:maxLines="3"
                android:scrollbars="vertical"
                android:layout_height="wrap_content"
                android:id="@+id/answer"/>
    </LinearLayout>



    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            app:srcCompat="@drawable/ic_more_vert_black_24dp"
            android:id="@+id/edit" android:layout_weight="0"/>
</LinearLayout>


</android.support.v7.widget.CardView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...