Невозможно изменить значение размера текста в ListView в другом классе фрагмента.
Я хочу изменить размер текста в ListView
в другом классе фрагмента. Я объявил переменную в другом классе как
public static TextView title;
затем я изменяю значение этого текстового формата, используя фрагмент класса.
title.setTextSize(30);
когда я возвращаюсь к другой активности, она не работает.
Вот мой код:
public class Setting extends AppCompatActivity {
private RadioGroup Text_Size;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
Text_Size = (RadioGroup) findViewById(R.id.radiogroup);
Text_Size.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.small:
HotNewsFrag.title.setTextSize(15);
break;
case R.id.medium:
HotNewsFrag.title.setTextSize(20);
break;
case R.id.big:
HotNewsFrag.title.setTextSize(30);
break;
default:
break;
}
}
});
LinearLayout back = (LinearLayout) findViewById(R.id.back1);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent setting = new Intent(Setting.this, MainActivity.class);
startActivity(setting);
}
});
}
}
Вот мой фрагмент:
public class HotNewsFrag extends Fragment {
private View view;
private ListView listOfNews;
ListViewAdapter adapter;
ArrayList<HotNews> arraylist1;
public static String newsid;
public static TextView title;
}
2 ответа
Если вы просто хотите, чтобы текст выделился, попробуйте использовать SetTypeFace.BOLD
То, как вы справляетесь с этим, совершенно неверно.
БОЛЬШАЯ ПРОБЛЕМА: определение текста View как Static вызовет утечку памяти и предотвратит сборку вашего вида и активности.
Вот два подхода:
ПЕРВЫЙ: ОБЩИЕ ПРЕДПОЧТЕНИЯ И ОБНОВЛЕНИЕ
Вы можете сохранить размер текста в sharedPreference и в своей деятельности или фрагментах, переопределить onResume и снова установить размер текста для нашего текстового представления на значение в sharedPreference, которое вы сохранили ранее
ВТОРОЙ: ВЕЩАТЕЛЬНЫЕ ПРИЕМНИКИ
Вы можете использовать приемники вещания и регистрировать их где угодно. всякий раз, когда пользователь изменяет размер текста, вы отправляете локальную трансляцию и изменяете размер текста везде, где вы его регистрируете.
Text_Size.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int txtSize=0;
switch (checkedId)
{
case R.id.small:
txtSize=15;
break;
case R.id.medium:
txtSize=20;
break;
case R.id.big:
txtSize=30;
break;
default:
break;
}
Setting.this.getSharedPreferences("MY_SHARED",0).edit().putInt("FONT_SIZE",txtSize).commit();
}
});
В вашем фрагменте
@Override
public void onResume() {
super.onResume();
title.setTextSize(getActivity().getSharedPreferences("MY_SHARED",0).getInt("FONT_SIZE",20));
ADAPTER_OF_YOUR_LISTVIEW.notifyAll();
}