自定义选择器,如NavigationView

时间:2016-03-26 11:19:00

标签: android android-layout navigation-drawer

有没有什么方法可以改变我在NavigationDrawer中按下的列表项的图标和文字的颜色。

我知道我可以轻松地使用NavigationView执行此操作,但我的要求非常奇怪,因此我无法使用NavigationView

直到现在我能够在选择项目后更改两者的颜色。 just like this

我尝试实施TouchListener。但它不起作用。

TouchListener

drlyt.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // darken background
                imgIcon.setColorFilter(Color.parseColor("#47ACD6"),
                        Mode.SRC_ATOP);
                txtTitle.setTextColor(Color.parseColor("#47ACD6"));
                Log.e("msg", "Down " + position);
                break;

            case MotionEvent.ACTION_UP:
                // clear color filter
                imgIcon.setColorFilter(null);
                txtTitle.setTextColor(Color.parseColor("#666666"));
                Log.e("msg", "Up");
                break;
            }
            return false;
        }
    });

请帮帮我。 谢谢。

1 个答案:

答案 0 :(得分:1)

支持库包括

AppCompatTextView

AppCompatImageView

支持backgroundTintbackgroundTintMode。因此,您可以创建colorList并使用setSupportBackgroundTintListsetSupportBackgroundTintMode等函数。

  

是肯定的。我可以找到AppCompatTextView但不能找到AppCompatImageView。和   你能给我一个如何使用它们的例子吗?

仅使用XML

cmd

抽拉/背景

<android.support.v7.widget.AppCompatImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_done"
    app:backgroundTint="@drawable/background"
    app:backgroundTintMode="src_over"/>

仅使用代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/colorAccent" android:state_pressed="true" />

    <item android:color="@color/colorPrimary" />
</selector>