#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);
}
};