Динамический TextView в Dynamic TableRow с эффектом выделения для просмотра текста в Android

Я разрабатываю одно приложение, где я отображаю некоторые данные в формате таблицы. Поэтому я реализовал следующий код

 @Override
    protected void onPostExecute(String result) {split1=new String[split.length];
        split2=new String[split.length];
        TableLayout table = (TableLayout) findViewById(R.id.myTableLayout);
        for(int i=0;i<split.length;i++)
        {

            String aa=split[i];
            String [] aaa=aa.split(" : ");
            split1[i]=aaa[0];
            split2[i]=aaa[1];
            TableRow row=new TableRow(getApplicationContext());
            TableLayout.LayoutParams lp =
                    new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,
                            TableLayout.LayoutParams.MATCH_PARENT);
            lp.setMargins(10,10,10,10);
            row.setLayoutParams(lp);
            TextView tvDebt=new TextView(OfferItemView.this);
            TextView tv=new TextView(OfferItemView.this);
            tv.setEllipsize(TextUtils.TruncateAt.MARQUEE);

            tv.setSingleLine(true);
            tv.setSelected(true);
            Log.v("Detail",""+split2[i]);
            tvDebt.setText("" + split1[i]);
            tv.setText("  :  " + split2[i]);
            row.addView(tvDebt);
            row.addView(tv);
            table.addView(row);
        }
    }

Он отображает данные, но если одна из строк велика, то этот текст выходит за пределы экрана. Я хочу применить эффект merquee, если строка велика.

Я добавляю скриншот этой таблицы

См текст выходить за пределы размера экрана.

так что я хочу, чтобы показать эффект шатра к нему

Пожалуйста, дайте мне решение, потому что за последние 2 месяца я не получил решение

Заранее большое спасибо

1 ответ

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

TableLayout tableLayout;


private void marquee() {
    tableLayout = (TableLayout) findViewById(R.id.myTableLayout);

    TextView textView1 = new TextView(getApplicationContext());
    TextView textView2 = new TextView(getApplicationContext());

    //the order in which you set the properties of the text view is important
    //this order works
    textView1.setText("Some long garbage bla bla bla barf narf laf tarf marf garf yarf parf");
    textView1.setTextSize(25);
    textView1.setWidth(100);
    textView1.setHeight(150);
    textView1.setLines(1);
    textView1.setHorizontallyScrolling(true);
    textView1.isFocusableInTouchMode();
    textView1.isFocusable();
    textView1.setSelected(true);
    textView1.setEllipsize(TextUtils.TruncateAt.MARQUEE);
    textView1.setMarqueeRepeatLimit(-1);

    //I show that you can apply the effect on more than 1 text view
    textView2.setText("Some long garbage bla bla bla barf narf laf tarf marf garf yarf parf");
    textView2.setTextSize(25);
    textView2.setWidth(100);
    textView2.setHeight(150);
    textView2.setLines(1);
    textView2.setHorizontallyScrolling(true);
    textView2.isFocusableInTouchMode();
    textView2.isFocusable();
    textView2.setSelected(true);
    textView2.setEllipsize(TextUtils.TruncateAt.MARQUEE);
    textView2.setMarqueeRepeatLimit(-1);

    //create row
    TableRow row = new TableRow(getApplicationContext());
    TableLayout.LayoutParams lp =
            new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,
                    TableLayout.LayoutParams.MATCH_PARENT);
    lp.setMargins(10, 10, 10, 10);
    row.setLayoutParams(lp);

    //add the text views to the row 
    row.addView(textView1);
    row.addView(textView2);

    //add the row to the table
    tableLayout.addView(row);


}
Другие вопросы по тегам