Изменение цвета текста кнопок при скольжении над ними - PullRequest
0 голосов
/ 09 июня 2019

Я немного новичок в программировании 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 голосов
/ 10 июня 2019

Попробуйте использовать selector, чтобы изменить text_color.

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