Динамический размер текста для текстового переключателя во фрагменте

#android #android-constraintlayout

#Android #android-constraintlayout

Вопрос:

Я разрабатываю простое приложение для Android, которое должно иметь разные тексты и размер текста в зависимости от кликов по нему. Для реализации я использовал ConstraintLayout с TextSwitcher для обеспечения анимации при изменении текста. Вот источники:

Макет:

 <android.support.constraint.ConstraintLayout
    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="com.example.android.counter.layout_main">

<TextSwitcher
        android:id="@ id/text_body"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inAnimation="@anim/push_down_in"
        android:outAnimation="@anim/push_down_out" />

</android.support.constraint.ConstraintLayout>
  

Код:

 private TextSwitcher mTextBody;
private int mTextSize = 20;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) {
    View view = inflater.inflate(R.layout.layout_main, viewGroup, false);

    mTextBody = (TextSwitcher) view.findViewById(R.id.text_body);

    mTextBody.setFactory(mViewSwitcherFactory);
    mTextBody.setText(getString(R.string.intro_text));
    mTextBody.setOnClickListener(mOnSwitcherClickListener);

    return view;
}

private ViewSwitcher.ViewFactory mViewSwitcherFactory = new ViewSwitcher.ViewFactory() {
    @Override
    public View makeView() {
        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.CENTER);
        textView.setTextSize(mTextSize);
        return textView;
    }
};

private View.OnClickListener mOnSwitcherClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mTextSize = 40;
        mTextBody.setText(getString(R.string.text_after_click));
    }
};
  

Начальная загрузка вводного текста и размер в порядке, но после щелчка по нему изменяется только текст, а не размер текста. Итак, вопрос в том, как можно динамически изменять размер текста (больше), когда речь идет о методе setFactory для TextSwitcher?

Любая помощь будет оценена.

Комментарии:

1. TextView tv = (TextView) mTextBody .getCurrentView(); следующая строка tv.setTextSize(mTextSize); , пожалуйста, проверьте, дайте мне знать, сработало ли это

2. @Ashvinsolanki, спасибо за ваше предложение, я добился желаемого результата.

3. можете ли вы опубликовать ответ или опубликовать ответ, который помогает людям

Ответ №1:

 private View.OnClickListener mOnSwitcherClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mTextSize = 40;
        mTextBody.setText(getString(R.string.text_after_click));
    }
};
  

в приведенном выше методе вы не меняете размер текста, вы меняете только текст

изменить с помощью

 private View.OnClickListener mOnSwitcherClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mTextSize = 40;
        TextView tv = (TextView)mTextBody.getCurrentView();
        tv.setText(getString(R.string.text_after_click));
        tv.setTextSize(mTextSize);
    }
};