Puede hacer el recuento de caracteres desde xml usando el contenedor TextInputLayout para EditText introducido en SupportLibrary v23.1
Simplemente envuelva su EditText con un TextInputLayout y establezca CounterEnabled en verdadero y establezca un counterMaxLength.
<android.support.design.widget.TextInputLayout
android:id="@+id/textContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:counterEnabled="true"
app:counterMaxLength="20"
>
<EditText
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Text Hint"
/>
</android.support.design.widget.TextInputLayout>
Obtendrás un efecto material como este
Puede usar counterOverflowTextAppearance , counterTextAppearance para diseñar el contador.
EDITAR
De la documentación de Android.
La clase TextInputEditText se proporciona para usarse como un elemento secundario de este diseño. El uso de TextInputEditText permite a TextInputLayout un mayor control sobre los aspectos visuales de cualquier entrada de texto. Un ejemplo de uso es el siguiente:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/form_username"/>
</android.support.design.widget.TextInputLayout>
TextInputLayout TextInputEditText