Как добавить большие и маленькие буквы в TextView, как в приложении Android Dialer?

Как я могу добавить большие и маленькие буквы в TextView, как на рисунке ниже:

Извините: "nuber" = "число"

2 ответа

Решение

Похоже, кнопка, которую вы видите в пользовательском интерфейсе, - это не стандартная кнопка Android, а скорее составное представление, состоящее из двух TextView.

Вы должны убедиться, что ваш составной вид является фокусируемым и кликабельным (а не двумя текстовыми представлениями, из которых он сделан), и предоставлять состояния по умолчанию, фокус и нажатие для этого вида.

public class MyCompositeView extends LinearLayout {

    private TextView primaryTextView;
    private TextView secondaryTextView;

    public MyCompositeView(Context context, AttributeSet attrs) {
        super(context, attrs);
        super.setOrientation(HORIZONTAL);
    }

    @Override
    public final void setOrientation(int orientation) {
        if (orientation != HORIZONTAL) {
            throw new IllegalArgumentException("MyCompositeView is a button-like widget, not a ViewGroup! Don't change my orientation");
        }
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        View.inflate(getContext(), R.layout.merge_my_composite_view, this);
        primaryTextView = (TextView) findViewById(R.id.my_composite_text_primary);
        secondaryTextView = (TextView) findViewById(R.id.my_composite_text_secondary);
    }

    public void setPrimaryText(String text) {
        if (valid(text)) {
            primaryTextView.setVisibility(VISIBLE);
        } else {
            primaryTextView.setVisibility(GONE);
        }
        primaryTextView.setText(text);
    }

    private static boolean valid(String text) {
        return text != null && !text.trim().isEmpty();
    }

    public void setSecondaryText(String text) {
        if (valid(text)) {
            secondaryTextView.setVisibility(VISIBLE);
        } else {
            secondaryTextView.setVisibility(GONE);
        }
        secondaryTextView.setText(text);
    }

}

Схема слияния:

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

  <TextView
    android:id="@+id/my_composite_text_primary"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center" />

  <TextView
    android:id="@+id/my_composite_text_secondary"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center" />

</merge>

И вы бы использовали его как:

<?xml version="1.0" encoding="utf-8"?>
<com.example.MyCompositeView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />

Вы можете попробовать использовать Html.fromHtml как:

button.setText(Html.fromHtml("html_code_with"));

вместо html_code_with установите html-код для большого текста и маленького текста.

Другие вопросы по тегам