Страница 1 из 1
Изменить TextView в ListView
Добавлено: 30 мар 2014, 16:00
Kirill Kirill
Изменять шрифт применимо к имеющемуся текстВью легко. Но как это сделать если у меня имеется листВью из которого я не знаю как вытащить или что сделать дабы задаить шрифт.
Вот пример моего кода
Код: Выделить всё
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class QuizMenuActivity extends QuizActivity {
private static long back_pressed;
Typeface typeface;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
String fontPath = "fonts/28.ttf";
typeface = Typeface.createFromAsset(getAssets(), fontPath);
ListView menuList = (ListView) findViewById(R.id.ListView_Menu);
String[] items = {
getResources().getString(R.string.menu_item_play),
getResources().getString(R.string.menu_item_settings),
getResources().getString(R.string.menu_item_help),
getResources().getString(R.string.menu_item_exit)
};
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items);
menuList.setAdapter(adapt);
menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View itemClicked, int position,
long id) {
textView = (TextView) itemClicked;
textView.setTypeface(typeface);
String strText = textView.getText().toString();
if (strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_play))) {
startActivity(new Intent(QuizMenuActivity.this, QuizGameActivity.class));
} else if(strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_help))){
startActivity(new Intent(QuizMenuActivity.this, QuizHelperActivity.class));
} else if(strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_settings))){
startActivity(new Intent(QuizMenuActivity.this, QuizSettingsActivity.class));
} else if (strText.equalsIgnoreCase(getResources().getString(
R.string.menu_item_exit))){
finish();
}
}
});
}
Самое главное что при методе онклик можно изменять шрифт, а в методе онКреате сколько не пробовал-все тщетно
Re: Изменить TextView в ListView
Добавлено: 31 мар 2014, 09:41
dimon314
Можно так сделать
Код: Выделить всё
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.menu_item, null, false);
TextView textView = (TextView) view.findViewById(R.id.textView1);
textView.setTypeface(typeface);
return view;
}
};
Re: Изменить TextView в ListView
Добавлено: 31 мар 2014, 21:17
Kirill Kirill
При таком коде ошибки не вылетает и приложение запускается, но нужно еще раз присвоить текст =(
Код: Выделить всё
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String[] items = {
getResources().getString(R.string.menu_item_play),
getResources().getString(R.string.menu_item_settings),
getResources().getString(R.string.menu_item_help),
getResources().getString(R.string.menu_item_exit)
};
String fontPath = "fonts/28.ttf";
typeface = Typeface.createFromAsset(getAssets(), fontPath);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.menu_item, null, false);
// for(int i = 0; i < 4; i ++){
TextView textView = (TextView) view.findViewById(R.id.text);
textView.setText(items[i]);
// }
textView.setTypeface(typeface);
return view;
}
};
Может кто подсказать как цикл использовать, а то не могу сообразить
У меня к сожалению вышло только сделать все пункты меню с одним именем)))
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 06:50
dimon314
Полный код(если я вас правильно понял)
Код: Выделить всё
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class QuizMenuActivity extends QuizActivity {
private static long back_pressed;
Typeface typeface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
String fontPath = "fonts/28.ttf";
typeface = Typeface.createFromAsset(getAssets(), fontPath);
ListView menuList = (ListView) findViewById(R.id.ListView_Menu);
String[] items = { getResources().getString(R.string.menu_item_play),
getResources().getString(R.string.menu_item_settings),
getResources().getString(R.string.menu_item_help),
getResources().getString(R.string.menu_item_exit) };
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,
R.layout.menu_item, items) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.menu_item, null, false);
TextView textView = (TextView) view
.findViewById(R.id.text);
textView.setTypeface(typeface);
return view;
}
};
menuList.setAdapter(adapt);
menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View itemClicked,
int position, long id) {
switch (position) {
case (0):
startActivity(new Intent(QuizMenuActivity.this,
QuizGameActivity.class));
break;
case (1):
startActivity(new Intent(QuizMenuActivity.this,
QuizSettingsActivity.class));
break;
case (2):
startActivity(new Intent(QuizMenuActivity.this,
QuizHelperActivity.class));
break;
case (3):
finish();
break;
}
}
});
}
}
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 13:25
Kirill Kirill
Проблема в том, что именно текст перестает отображать текствью. Если я добавлю textView.setText(R.string.menu_item_play);
в ArrayAdapter то выходит такая картина, а если не добавляют то ничего не выводит. Так вот я не понимаю как мне назначить для
каждого последующего текствью свой текст. В приложении скрины
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 13:56
dimon314
menu_item.xml код покажи.
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 14:14
dimon314
Сори, сам неправильно написал, так вроде должно работать
Код: Выделить всё
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class QuizMenuActivity extends QuizActivity {
private static long back_pressed;
Typeface typeface;
String[] items ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
String fontPath = "fonts/28.ttf";
typeface = Typeface.createFromAsset(getAssets(), fontPath);
ListView menuList = (ListView) findViewById(R.id.ListView_Menu);
items = new String[]{ getResources().getString(R.string.menu_item_play),
getResources().getString(R.string.menu_item_settings),
getResources().getString(R.string.menu_item_help),
getResources().getString(R.string.menu_item_exit) };
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,
R.layout.menu_item, items) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.menu_item, null, false);
TextView textView = (TextView) view
.findViewById(R.id.text);
textView.setTypeface(typeface);
textView.setText(items[position]);
return view;
}
};
menuList.setAdapter(adapt);
menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View itemClicked,
int position, long id) {
switch (position) {
case (0):
startActivity(new Intent(QuizMenuActivity.this,
QuizGameActivity.class));
break;
case (1):
startActivity(new Intent(QuizMenuActivity.this,
QuizSettingsActivity.class));
break;
case (2):
startActivity(new Intent(QuizMenuActivity.this,
QuizHelperActivity.class));
break;
case (3):
finish();
break;
}
}
});
}
}
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 14:19
Kirill Kirill
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="
http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="match_parent"
android:textSize="@dimen/menu_item_size"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"
android:shadowRadius="5"
android:gravity="right"
android:layout_marginRight="10dp"
android:textColor="@color/menu_color"
android:shadowColor="@color/menu_glow"
android:shadowDy="3"
android:shadowDx="3" />
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 14:20
dimon314
Код выше проверь.
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 14:25
Kirill Kirill
Спасибо большое , Димон!!!!
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 14:26
dimon314
Не за что.
Re: Изменить TextView в ListView
Добавлено: 01 апр 2014, 17:21
dimon314
Можно немного короче
Код: Выделить всё
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView textview = (TextView) view;
textview.setTypeface(typeface);
return textview;
}
Re: Изменить TextView в ListView
Добавлено: 12 апр 2014, 15:14
Kirill Kirill
Вот такое с самого начал как раз не заехало