如何在com.mancj.materialsearchbar.MaterialSearchBar中更改文本颜色

时间:2018-06-13 07:27:02

标签: android

我导入了库mancj.materialSearchBar,当我开始搜索时,我输入的文本为白色,与materialSearchBar的背景颜色相同。用户无法在搜索栏中看到他们输入的内容。如何在mancj.materialSearchBar中更改键入的文本颜色?我已经应用了android:theme但似乎没有任何影响...

activity_food_list.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FoodList"
>

<com.mancj.materialsearchbar.MaterialSearchBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/searchBar"
    android:layout_alignParentTop="true"
    app:mt_speechMode="false"
    app:mt_hint="Enter your food"
    app:mt_textColor="#000000"
    android:background="@color/colorPrimary"
    />

<android.support.v7.widget.RecyclerView
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:id="@+id/recycler_food"
    android:scrollbars="vertical"
    android:layout_below="@id/searchBar"/>



</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

我知道这个问题写于2013年6月,但如果我的回答可以帮助某些人...! :-)

使用反射解决问题

前言

您可以使用反射来获取编辑文本并为其着色。请注意,它也可以与占位符一起使用(注意:您没有指定是否要寻求有关与用户键入的搜索关键字相对应的实际编辑文本或占位符的帮助)。

在这个答案中,我将向您展示1)如何获取上述编辑文本,以及2)如何获取上述占位符,以及3)如何设置文本并为其着色。在最后一部分中,相应的代码已绑定到此答案。

注意:答案的目的不是解释“反射”的概念,而是针对Java或Android进行解释。唯一的目的是使您能够使用反射来自定义mancj / MaterialSearchBar的关键字来编辑文本和占位符(以及扩展名,其所有小部件)。

步骤

获取小部件

实际阅读mancj / MaterialSearchBar的类,您将看到其字段列表。根据您的问题,有趣的是:

  1. searchEdit

  2. placeholder

(很明显,请注意,它可能与(搜索例如)API与另一个API有(非常)不同。)

然后,您可以获取它并使它可访问,以获取相应的EditText(与搜索编辑关联)和TextView(与占位符关联)。

设置文字和颜色

一旦获得了适当的小部件,就可以使用它们的方法(EditTextTextView i.e。:方法)来设置其文本和颜色。有趣的方法如下:setTextsetTextColor

进一步:设置字体系列

一件有趣的事情可能是自定义占位符和关键字编辑文本的字体系列。

与上一节类似,您可以1)获取字体(ResourcesCompat.getFont(some_context, R.font.some_font 例如)和2)在所获得的小部件上使用setTypeface({{1} }和/或EditText)。

来源

以下是搜索关键字编辑文本的相应来源。按照前面的说明,可以对占位符执行相同的操作。

TextView