Как динамически установить размер текста в нескольких текстовых представлениях, формируя строки в виде списка?
Я смотрю на это уже несколько дней, но безрезультатно (пока!)
Как говорится в вопросе - я пытаюсь динамически изменять размер текста, отображаемого в виде списка. Мой xml настроен так, чтобы описать каждую строку в виде списка как изображение (значок) и текст (вид).
Я хочу настроить размер текста во всех текстовых представлениях 'label' в представлении списка за один раз, в двух ситуациях: 1) в ответ на нажатие кнопки в текущем действии 2) в ответ на значение, прочитанное из общего ресурса предпочтения
Я считаю, что я могу использовать метод setTextAppearance. Это мой код - он работает без ошибок, но тогда он также не дает желаемого эффекта!
Буду очень признателен за любые ваши мысли по этому поводу. С наилучшими пожеланиями Стивен
import android.content.Context;
import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class IndexCustomAdapter extends ArrayAdapter<String>
{
LayoutInflater inflater;
String[] indexContents;
String[] scores;
private SharedPreferences spSettings;
public IndexCustomAdapter(Context context, int indexRowId, String[] objs)
{
super(context, indexRowId, objs);
inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
indexContents = objs;
spSettings = getContext().getSharedPreferences("settings", 0);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
{
convertView = inflater.inflate(R.layout.indexrow, parent, false);
}
TextView label = (TextView) convertView.findViewById(R.id.label);
ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
// Select the correct text size
int fontSize = spSettings.getInt("fontSize", 16);
switch (fontSize)
{
case 24:
label.setTextAppearance(getContext(), android.R.attr.textAppearanceLarge);
break;
case 20:
label.setTextAppearance(getContext(), android.R.attr.textAppearanceMedium);
case 16:
label.setTextAppearance(getContext(), android.R.attr.textAppearanceSmall);
}
label.setText(indexContents[position]);
}
}
1 ответ
В onClickListener вашей кнопки сохраните новый размер шрифта в ваших общих настройках, затем используйте метод notifyDataSetChanged. Я думаю что-то вроде этого.
button.SetOnclickListener(new OnclickListener(){
public void onClick(View v){
//Update shared preferences with desired
//font size here
//Instance of your IndexCustomAdapter that you attatched to your listview
indexCustomAdapter.notifyDataSetChanged();
}
})