【问题标题】:How to change the color of textview backgrounds when swiped?滑动时如何更改textview背景的颜色?
【发布时间】:2017-01-23 04:09:40
【问题描述】:

我正在开发一个 android 单词搜索应用程序,我动态创建了一个带有 textviewstablelayout 来保存每个字母。当用户的手指在字母网格上滑动时,我想更改那些textviews 的背景颜色。

这是表格布局的代码:

public void createGrid(char[][] input) {
    RelativeLayout rl = (RelativeLayout)findViewById(R.id.rl);
    TableLayout table = (TableLayout) findViewById(R.id.mainLayout);
    table.setTag(1);
    Typeface font = Typeface.createFromAsset(getAssets(), "kg.ttf");
    int j;



    for (int i = 0; i < input.length; i++) {
        LinearLayout rowLayout = new LinearLayout(this);
        rowLayout.setOrientation(LinearLayout.HORIZONTAL);
        rowLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        final TableRow row = new TableRow(this);
        row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        row.setGravity(Gravity.CENTER_HORIZONTAL);

        for (j = 0; j < input.length; j++) {
            final TextView text = new TextView(this);
            Character temp = input[i][j];
            text.setTag(i);
            text.setText(temp.toString());
            text.setPadding(20, 20, 20, 20);
            text.setTag(i);
            text.setTextSize(txtSize);
            text.setTypeface(font);
            text.setGravity(Gravity.CENTER);
            text.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    view.setBackgroundColor(Color.parseColor("#c03768b7"));
                    ((TextView)view).setTextColor(Color.WHITE);
                }
            });
            row.addView(text);
            row.getChildAt(j);

        }
        table.addView(row);

    }
  }

如您所见,我为每个TextViews 分配了OnClickListeners。但我想要一个轻松的突出显示,有没有办法将其更改为滑动而不是点击每个textviews

非常感谢任何 cmets、答案和建议。

编辑:

我想要做的是在文本被滑动时改变文本中字母的颜色。

【问题讨论】:

  • 您是否尝试在滑动文本时更改文本中字母的颜色?
  • @Gboy...请检查答案,让我知道情况
  • @Superman - 是的。这就是我想要做的事情
  • @Athul 抱歉回复晚了。我现在要试试这个,然后告诉你它是否适合我。谢谢!
  • @Athul 我尝试了答案,但似乎只有一个文本视图受该代码影响,并且只显示了滑动方向的祝酒词。我试图将:view.setBackgroundColor(Color.parseColor("#c03768b7")); ((TextView)view).setTextColor(Color.WHITE); 放在 if else 语句上,但这也不起作用。

标签: android android-tablelayout


【解决方案1】:

如下所述检测Swipe并实现改变textview背景颜色的功能

     text.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {

                    switch (event.getAction()) {

                        case MotionEvent.ACTION_DOWN:
                            x1 = event.getX();
                            y1 = event.getY();
                            t1 = System.currentTimeMillis();
                            return true;
                        case MotionEvent.ACTION_UP:
                            x2 = event.getX();
                            y2 = event.getY();
                            t2 = System.currentTimeMillis();

                            if (x1 > x2) {
                                Toast.makeText(getActivity(), "Left swipe", Toast.LENGTH_SHORT).show();
                                // Insert your code to change the color of the textview background.
                  v.setBackgroundColor(Color.parseColor("#c03768b7")); 
                            } else if (x2 > x1) {
                                Toast.makeText(getActivity(), "Right swipe", Toast.LENGTH_SHORT).show();
                  v.setBackgroundColor(Color.parseColor("#c03768b7")); 
                               // Insert your code to change the color of the textview background.

                            } 


                            return true;
                    }

                    return false;
                }

【讨论】:

  • 使用这个 txt.setBackgroundColor(Color.RED); 改变背景;
  • 不是像这样添加颜色...你可以创建一个数组并使用函数 t =o 使用函数中的数组索引号更改背景颜色
  • 仅当您希望背景随多种颜色变化时
猜你喜欢
  • 2015-12-17
  • 2017-08-19
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 2011-06-05
相关资源
最近更新 更多