Выделить текст всего textView в absoluteLayout - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть некоторый TextView в AbsoluteLayout. Я хочу выбрать все другие textView, когда я выбираю один textView.

for(int i=0;i<10;i++){
    AppCompatTextView textView = new AppCompatTextView(context);
  String txt="txt"+i;

    textView.setTextIsSelectable(true);
    textView.setText(txt);

       AbsoluteLayout.LayoutParams lp = new AbsoluteLayout.LayoutParams(width, height, x, y);


    textView.setLayoutParams(lp);
    absoluteLayout.addView(textView);}

enter image description here

1 Ответ

0 голосов
/ 10 февраля 2019

Я хочу выбрать все другие textView, когда я выбираю один textView.

Одна альтернатива, которую вы можете сделать, чтобы выбрать все TextView, которые являются отдельными, заключается в создании еще одной кнопки для запуска выбора Всетогда ваша кнопка вызывает этот метод.Вы можете попробовать этот код

// ....
    AbsoluteLayout absoluteLayout = new AbsoluteLayout(this);
    // ......
    // your dummy absoluteLayout
    private void selectAllText(View view){


        int num = absoluteLayout.getChildCount();
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<num; i++){
            AppCompatTextView tv = (AppCompatTextView) absoluteLayout.getChildAt(i);
            tv.setSelectAllOnFocus(true);
            String thisTxt = tv.getText().toString();
            sb.append(thisTxt);
            sb.append("\n");
        }

        String allAppendText = sb.toString();
        // DO SOMETHING WITH FULL SELECTED TEXT

    }

ОБНОВЛЕНИЕ Это интересный вопрос, поэтому я создал образец проекта, чтобы решить эту проблему.Этот образец может помочь вашей проблеме.MainActivity.Java

public class MainActivity extends AppCompatActivity {

    private LinearLayout linearLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        linearLayout = findViewById(R.id.mylayout);
        for(int i=0; i<3; i++){
            CustomTextView tv = new CustomTextView(this);
            tv.setText("Text " + i);
            tv.setOnLongClickListener(view -> {

                if(!tv.isSelected()){
                    tv.setBackgroundColor(Color.RED);
                    tv.setSelected(true);
                }else {
                    tv.setSelected(false);
                    tv.setBackgroundColor(Color.WHITE);
                }
                return true;
            });

            linearLayout.addView(tv);
        }
    }

    public void showTextSelected(View view) {
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<linearLayout.getChildCount(); i++){
            CustomTextView tv = (CustomTextView) linearLayout.getChildAt(i);
            if(tv.isSelected()){
                String str = tv.getText().toString();
                sb.append(str).append("\n");
            }
        }
        Toast.makeText(this, "ALL TEXT : " + sb.toString(), Toast.LENGTH_SHORT).show();
    }
}

CustomTextView.Java

public class CustomTextView extends android.support.v7.widget.AppCompatTextView {
    private boolean selected;
    public CustomTextView(Context context) {
        super(context);
        init(context);
    }

    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context){
        this.setPadding(10, 10, 10, 10);
        selected = false;
    }

    @Override
    public boolean isSelected() {
        return selected;
    }

    @Override
    public void setSelected(boolean selected) {
        this.selected = selected;
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

   <LinearLayout
       android:id="@+id/mylayout"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="vertical"/>

   <Button
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_alignParentStart="true"
       android:layout_alignParentBottom="true"
       android:onClick="showTextSelected"
       android:text="SHOW" />
</RelativeLayout>

Вы можете увидеть результат в виде видео здесь: Результат видео, вы можете заменить LinearLayout на AbsoluteLayout и добавить дополнительные параметры в CustomTextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...