2

私はこれを数日間見てきましたが、役に立ちませんでした(まだ!)

質問にあるように、リストビューに表示されるテキストのサイズを動的に変更しようとしています。私のxmlは、リストビューの各行をイメージビュー(アイコン)とテキストビュー(ラベル)を持つものとして記述するように設定されています。

2 つの状況で、リスト ビューのすべての「ラベル」テキストビュー内のテキストのサイズを一度に調整したい: 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]);
    }
}
4

1 に答える 1

3

ボタンの 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();

    }
})
于 2012-09-12T00:30:59.233 に答える