gpt4 book ai didi

android - 为 ListView 设置字体

转载 作者:行者123 更新时间:2023-11-29 14:52:42 24 4
gpt4 key购买 nike

我尝试使用此方法为 TextView 设置字体:

public static final void setAppFont(ViewGroup mContainer, Typeface mFont)
{
if (mContainer == null || mFont == null) return;

final int mCount = mContainer.getChildCount();

// Loop through all of the children.
for (int i = 0; i < mCount; ++i)
{
final View mChild = mContainer.getChildAt(i);
if (mChild instanceof TextView)
{
// Set the font if it is a TextView.
((TextView) mChild).setTypeface(mFont);
}
else if (mChild instanceof ViewGroup)
{
// Recursively attempt another ViewGroup.
setAppFont((ViewGroup) mChild, mFont);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

// See assets/res/any/layout/styled_text.xml for this
// view layout definition.
setContentView(R.layout.read_asset);


final Typeface mFont = Typeface.createFromAsset(getAssets(),
"myfont.otf");
final ViewGroup mContainer = (ViewGroup) findViewById(
android.R.id.content).getRootView();
MyActivity.setAppFont(mContainer, mFont);
}

但现在我想为这个 ListView 适配器设置相同的字体:

public class MainActivity extends Activity {

// List view
private ListView lv;

// Listview Adapter

ArrayAdapter<String> adapter;


// Search EditText
EditText inputSearch;



// ArrayList for Listview

ArrayList<HashMap<String, String>> productList;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Listview Data


String products[] = {"item1", "item2","item3","item4","item5","item6" };



lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);

// Adding items to listview

adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);

/**
* Enabling Search Filter
* */
inputSearch.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
MainActivity.this.adapter.getFilter().filter(cs);
}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
}

有什么建议吗?提前谢谢你。

最佳答案

只需重写适配器的 getView 方法:

    final Typeface mFont = Typeface.createFromAsset(getAssets(), "myfont.otf"); 
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewGroup view = (ViewGroup) super.getView(position, convertView, parent);
if(convertView == null) MyActivity.setAppFont(view, mFont);
return view;
}
};

关于android - 为 ListView 设置字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com