【问题标题】:Change buttons text color while sliding over them在滑动按钮时更改按钮文本颜色
【发布时间】:2019-06-09 20:34:14
【问题描述】:

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

我试图在每个按钮上实现一个触摸监听器,但我意识到我完全错了。所以我想我应该在布局上应用一些监听器,但我不太确定触摸监听器是否会以某种方式帮助我,因为触摸事件更像是点击事件,我认为我想做的事情很多更多的运动。在我“google it”并尝试了一些事情之后,我有点不知所措,我在想我想做的不是现在的布局。我想知道是否有某种方法可以检测手指是否在某些按钮上滑动?

我的布局:

<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;
            }
        }

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    尝试用selector改成text_color

    【讨论】:

    • 文本颜色和现在一样工作正常,问题是我不知道如何在将手指移到其他按钮上时触发事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2017-04-10
    • 2011-03-14
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多