View Full Version : تغییر فونت لیست ویو شخصی سازی شده
dc-master
یک شنبه 27 بهمن 1392, 14:32 عصر
سلام
من لیست ویو رو شخصی سازی کردم ولی نمیدونم چطوری فونتشو تغییر بدم:افسرده:
میشه کدشو بذارید
ممنون
saeed_g21
یک شنبه 27 بهمن 1392, 14:45 عصر
قبل از ایجاد تاپیک جستجو کنید و تاپیک تکراری ایجاد نکنید
Typeface font=Typeface.createFromAsset(getAssets(),"BYekan.ttf");
text.setTypeface(font);
فونت خود را حتما به فولدر assets کپی نمایید
dc-master
یک شنبه 27 بهمن 1392, 14:52 عصر
من این کار رو کردم ولی فورس کلوز میده
اینجا منظور از text همون TextView هست که برای لیست ویو درست کردیم دیگه؟
من دقیقا همین کار رو کردم ولی فورس کلوز میده
saeed_g21
یک شنبه 27 بهمن 1392, 15:01 عصر
اینجا منظور از text همون TextView هست که برای لیست ویو درست کردیم دیگه؟ -- بله
کد خود را بزارین اینجا بهتره
dc-master
یک شنبه 27 بهمن 1392, 15:07 عصر
TextView rtxt=(TextView) findViewById(R.id.row_txt);
Typeface yekan=Typeface.createFromAsset(getAssets(), "fonts/yekan.TTF");
rtxt.seTypeface(yekan);
final String item[] = getResources().getStringArray(R.array.dificulty);
adapter = new ArrayAdapter<String>(this,
R.layout.row, R.id.row_txt,item);
list.setAdapter(adapter);
haniiii
یک شنبه 27 بهمن 1392, 15:40 عصر
TextView rtxt=(TextView) findViewById(R.id.row_txt);
Typeface yekan=Typeface.createFromAsset(getAssets(), "fonts/yekan.TTF");
rtxt.seTypeface(yekan);
final String item[] = getResources().getStringArray(R.array.dificulty);
adapter = new ArrayAdapter<String>(this,
R.layout.row, R.id.row_txt,item);
list.setAdapter(adapter);
برای این ارور میده که شما اصلا از اون layout مورد نظر ( R.layout.row ) اینجا استفاده نکردین و اداپتر هست که به اون دسترسی داره ... شما باید با استفاده از اداپتر custom اینکار رو انجام بدین و داخل اداپتر settypeface کنین
http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text
dc-master
یک شنبه 27 بهمن 1392, 21:44 عصر
سلام
کارداد
من از اداپتر custom استفاده کردم و مشکل فونت حل شد ولی یه مشکل جدید بوجود اومد که دلیلشو میدونم اما نمی دونم چطور حلش کنم:d
من از سرچ استفاده میکنم سرچ هم درست کار میکنه ولی مثلا من سه تا آرایه دارم توی لیست ویو که داخلشون حرف a هست،وقتی حرف a رو سرچ میکنم همه ی آرایه ها میرن و سه تا آرایه باقی می مونه اما مشکل اینجاست که متن و تصویر این سه تا آرایه همون متن و تصویر سه آرایه اول لیست ویو هست یعنی تغیر نمیکنن
ولی وقتی روشون کلیک میکنم کاری رو انجام میدن که من به اون سه تا آرایه که حرف a توشون بود گفته بودم انجام بدن
یعنی همون سه تا هستن ولی تصویر و متنشون فرق داره
یه مثال:
مثلا من 10 تا آرایه به نام های a,b,c,d,e,f,g,h,i,j دارم
وقتی سرچ میکنم b فقط a رو نشون میده ولی کاری که b قرار بود انجام بده رو انجام میده
وقتی سرچ میکنم c فقط a رو نشون میده ولی کاری که c قرار بود انجام بده رو انجام میده
و....
فکنم مشکل بخاطر اداپتر custom و کد زیر در اداپتر custom باشه:
rtxt.setText (items[position]);
rtxt.setTypeface(yekan);
if (position == 0)
rimg.setImageResource(R.drawable.a);
خودمم نفهمیدم چی گفتم امیدوارم شما فهمیده باشین:بامزه:
به حر حال کد کامل رو میذارم خودتون ببینید:لبخند:
کد کامل:
public class Main extends ListActivity {
MyAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.Main);
//tarif
TextView rtxt=(TextView) findViewById(R.id.row_txt);
EditText search=(EditText) findViewById(R.id.search);
//font
Typeface yekan=Typeface.createFromAsset(getAssets(), "fonts/yekan.TTF");
Typeface titr=Typeface.createFromAsset(getAssets(), "fonts/titr.TTF");
adapter = (new MyAdapter (this,android.R.layout.simple_list_item_1,R.id.row _txt,
getResources().getStringArray(R.array.dif)));
setListAdapter(adapter);
ListView lv = (ListView) findViewById(android.R.id.list);
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(Main.this, adapter.getItem(position),
Toast.LENGTH_SHORT).show();
}
});
search.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s.toString());
}
});
}
//adapter
private class MyAdapter extends ArrayAdapter <String> {
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView (int position, View convertView, ViewGroup parent) {
LayoutInflater baz =(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View item = baz.inflate(R.layout.row, parent, false);
String[] items =getResources ().getStringArray(R.array.dif);
Typeface yekan=Typeface.createFromAsset(getAssets(), "fonts/yekan.TTF");
Typeface titr=Typeface.createFromAsset(getAssets(), "fonts/titr.TTF");
ImageView rimg=(ImageView) item.findViewById(R.id.row_img);
TextView rtxt=(TextView) item.findViewById(R.id.row_txt);
rtxt.setText (items[position]);
rtxt.setTypeface(yekan);
if (position == 0)
rimg.setImageResource(R.drawable.a);
if (position == 1)
rimg.setImageResource(R.drawable.b);
if (position == 2)
rimg.setImageResource(R.drawable.c);
if (position == 3)
rimg.setImageResource(R.drawable.d);
if (position == 4)
rimg.setImageResource(R.drawable.e);
if (position == 5)
rimg.setImageResource(R.drawable.f);
if (position == 6)
rimg.setImageResource(R.drawable.g);
if (position == 7)
rimg.setImageResource(R.drawable.h);
if (position == 8)
rimg.setImageResource(R.drawable.i);
if (position == 9)
rimg.setImageResource(R.drawable.j);
if (position == 10)
rimg.setImageResource(R.drawable.k);
return item;
}
}
}
haniiii
دوشنبه 28 بهمن 1392, 01:13 صبح
دوست عزیز ... یه مقدار مبهم بود ... ولی میتونم خلاصه در مورد فیلتر تو adapter توضیح بدم ... شما وقتی یه چیزی رو فیلتر میکنید درسته که نتیجه مورد نظر رو داره ... ولی position اینجا تغییر میکنه به همین خاطر بهتره متکی به position نباشه drawable هاتون میتونید یه tag خاص برای هر کدوم انتخاب کنید که مشکل حل بشه
dc-master
دوشنبه 28 بهمن 1392, 12:55 عصر
شما وقتی یه چیزی رو فیلتر میکنید درسته که نتیجه مورد نظر رو داره ... ولی position اینجا تغییر میکنه به همین خاطر بهتره متکی به position نباشه
مشکل دقیقا همین جاست
چیکار کنم متکی به position نباشه؟:ناراحت:
dc-master
دوشنبه 28 بهمن 1392, 13:35 عصر
سلام
مشکل حل شد:تشویق:
ممنون از همه کسایی که کمک کردن:قلب:
برای ساخت آداپتر شخصی از آموزش های لیندا استفاده کردم(البته رایگان و به زبان فارسی:لبخند:)
اینجا میتونید فیلم آموزش رو دانلود کنید(رایگان)
درضمن این سایت مال من نیست مال هرکی هست خدا خیرش بده
http://androidcode.ir/post/list
http://androidcode.ir/post/custom-list
اینطوری راحت میشه فونت رو تغییر داد
و این کد رو هم تغییر دادم تا مشکل جستوجو حل شد
if (adapter.getItem(position).equals(items[0])) {
rtxt.setText (items[0]);
rimg.setImageResource(R.drawable.a);
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.