滑过按钮时更改按钮的文本颜色

时间:2019-06-09 20:34:14

标签: android android-layout

我是android编程的新手,我正面临一个真正的问题。我有一个带有一些按钮的布局,并且我试图通过滑动按钮来更改按钮的文本颜色,并且在松开手指后,我想回到所有触摸按钮的当前颜色。

我试图在每个按钮上实现一个触摸侦听器,但是我意识到我完全错了。所以我想我应该在布局上应用一些侦听器,但是我不确定触摸侦听器会在某种程度上对我有所帮助,因为触摸事件更像是单击事件,并且我想做的事情很多更多的运动。在我“谷歌搜索”并尝试了一些东西之后,我有点不知所措,我想我想做的并不是现在的布局。我想知道是否可以通过某种方式来检测手指是否在某些按钮上滑动?

我的布局:

<RelativeLayout
    android:id="@+id/main_layout_braille"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    >


    <Button
        android:id="@+id/btn_1"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:background="@drawable/round_shape"
        android:text="1"
        android:textSize="40sp"
        android:textColor="#f8fdf9"
        android:tag="x"
        android:layout_margin="30sp"
        />


    <Button
        android:id="@+id/btn_2"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:background="@drawable/round_shape"
        android:text="2"
        android:textSize="40sp"
        android:textColor="#f8fdf9"
        android:tag="x"
        android:layout_margin="30sp"
        android:layout_below="@+id/btn_1"
        />



    <Button
        android:id="@+id/btn_3"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:background="@drawable/round_shape"
        android:text="3"
        android:textSize="40sp"
        android:textColor="#f8fdf9"
        android:tag="x"
        android:layout_margin="30sp"
        android:layout_below="@+id/btn_2"
        />


    <Button
        android:id="@+id/btn_4"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:background="@drawable/round_shape"
        android:text="4"
        android:textSize="40sp"
        android:textColor="#f8fdf9"
        android:tag="x"
        android:layout_margin="30sp"
        android:layout_alignParentRight="true"
        />



    <Button
        android:id="@+id/btn_5"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:background="@drawable/round_shape"
        android:text="5"
        android:textSize="40sp"
        android:textColor="#f8fdf9"
        android:tag="x"
        android:layout_margin="30sp"
        android:layout_alignParentRight="true"
        android:layout_below="@id/btn_4"
        />



    <Button
        android:id="@+id/btn_6"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:background="@drawable/round_shape"
        android:text="6"
        android:textSize="40sp"
        android:textColor="#f8fdf9"
        android:tag="x"
        android:layout_margin="30sp"
        android:layout_alignParentRight="true"
        android:layout_below="@id/btn_5"
        />


</RelativeLayout>

以及一次只触摸一个按钮的代码:

 btn_1.setOnTouchListener(mOnTouchListener);
 btn_2.setOnTouchListener(mOnTouchListener);
 btn_3.setOnTouchListener(mOnTouchListener);
 btn_4.setOnTouchListener(mOnTouchListener);
 btn_5.setOnTouchListener(mOnTouchListener);
 btn_6.setOnTouchListener(mOnTouchListener);

OnTouchListener mOnTouchListener = new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event)
        {
            switch (event.getAction())
            {
                case MotionEvent.ACTION_DOWN:
                    // PRESSED
                    actionDown(v.getId());
                    return true; // if you want to handle the touch event
                case MotionEvent.ACTION_UP:
                    // RELEASED
                    actionUp(v.getId());
                    return true; // if you want to handle the touch event
                case MotionEvent.ACTION_MOVE:
                    actionHoverEnter(v.getId());
            }
            return false;
        }

private void actionHoverEnter(int id)
        {
            switch (id)
            {
                case R.id.btn_1:
                    btn_1.setTextColor(Color.RED);
                    break;
                case R.id.btn_2:
                    btn_2.setTextColor(Color.RED);
                    break;
                case R.id.btn_3:
                    btn_3.setTextColor(Color.RED);
                    break;
                case R.id.btn_4:
                    btn_4.setTextColor(Color.RED);
                    break;
                case R.id.btn_5:
                    btn_5.setTextColor(Color.RED);
                    break;
                case R.id.btn_6:
                    btn_6.setTextColor(Color.RED);
                    break;
            }
        }

        private void actionUp(int id)
        {
            switch (id)
            {
                case R.id.btn_1:
                    btn_1.setTextColor(Color.WHITE);
                    break;
                case R.id.btn_2:
                    btn_2.setTextColor(Color.WHITE);
                    break;

                case R.id.btn_3:
                    btn_3.setTextColor(Color.WHITE);
                    break;
                case R.id.btn_4:
                    btn_4.setTextColor(Color.WHITE);
                    break;
                case R.id.btn_5:
                    btn_5.setTextColor(Color.WHITE);
                    break;
                case R.id.btn_6:
                    btn_6.setTextColor(Color.WHITE);
                    break;
            }
        }

        private void actionDown(int id)
        {
            switch (id)
            {
                case R.id.btn_1:
                    btn_1.setTextColor(Color.RED);
                    break;
                case R.id.btn_2:
                    btn_2.setTextColor(Color.RED);
                    break;
                case R.id.btn_3:
                    btn_3.setTextColor(Color.RED);
                    break;
                case R.id.btn_4:
                    btn_4.setTextColor(Color.RED);
                    break;
                case R.id.btn_5:
                    btn_5.setTextColor(Color.RED);
                    break;
                case R.id.btn_6:
                    btn_6.setTextColor(Color.RED);
                    break;
            }
        }

1 个答案:

答案 0 :(得分:0)

尝试使用selector更改text_color