フォント(色とサイズ)とListViewの背景を変更しようとしています。 XMLではなくコード行で変更したいです。私のリストビューは次のようになります:xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:padding="10dp"
Android:textSize="18sp" Android:text="@string/hello">
</TextView>
私のコードは
public class NewsActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ArrayAdapter listItemAdapter = new ArrayAdapter( this,Android.R.layout.simple_list_item_1, v_itemList );
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,ynetList));
View v=getListView() ;
ListView lv = getListView();
次は何?私のコードに基づいて例を教えてください
CustomListAdapterを作成する必要があります。
public class CustomListAdapter extends ArrayAdapter <String> {
private Context mContext;
private int id;
private List <String>items ;
public CustomListAdapter(Context context, int textViewResourceId , List<String> list )
{
super(context, textViewResourceId, list);
mContext = context;
id = textViewResourceId;
items = list ;
}
@Override
public View getView(int position, View v, ViewGroup parent)
{
View mView = v ;
if(mView == null){
LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = vi.inflate(id, null);
}
TextView text = (TextView) mView.findViewById(R.id.textView);
if(items.get(position) != null )
{
text.setTextColor(Color.WHITE);
text.setText(items.get(position));
text.setBackgroundColor(Color.RED);
int color = Color.argb( 200, 255, 64, 64 );
text.setBackgroundColor( color );
}
return mView;
}
}
リスト項目は次のようになります(custom_list.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<TextView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:id="@+id/textView"
Android:textSize="20px" Android:paddingTop="10dip" Android:paddingBottom="10dip"/>
</LinearLayout>
TextView APIを使用して、好みに合わせてテキストを飾ります
そして、あなたはこのようにそれを使用します
listAdapter = new CustomListAdapter(YourActivity.this , R.layout.custom_list , mList);
mListView.setAdapter(listAdapter);
CustomAdapterを作成し、そこにgetView()があるので、リストビューの背景色を変更したい場合は、これを使用します:
v.setBackgroundColor(Color.CYAN);
TextColorを変更する場合は、次のようにします。
tv.setTextColor(Color.RED);
およびtextSizeの場合:
tv.setTextSize(20);
「v」はリストビュー、「tv」はテキストビューです
さらに良いことに、リストセルビュー用に別個のAndroid xmlレイアウトを作成する必要はありません。リストにtextviewのみが含まれる場合は、「Android.R.layout.simple_list_item_1」を使用できます。
private class ExampleAdapter extends ArrayAdapter<String>{
public ExampleAdapter(Context context, int textViewResourceId, String[] objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView tv = (TextView) view.findViewById(Android.R.id.text1);
tv.setTextColor(0);
return view;
}
colors.xmlの色を使用する場合、実験:
public View getView(int position, View convertView, ViewGroup parent) {
...
View rowView = inflater.inflate(this.rowLayoutID, parent, false);
rowView.setBackgroundColor(rowView.getResources().getColor(R.color.my_bg_color));
TextView title = (TextView) rowView.findViewById(R.id.txtRowTitle);
title.setTextColor(
rowView.getResources().getColor(R.color.my_title_color));
...
}
あなたも使用できます:
private static final int bgColor = 0xAAAAFFFF;
public View getView(int position, View convertView, ViewGroup parent) {
...
View rowView = inflater.inflate(this.rowLayoutID, parent, false);
rowView.setBackgroundColor(bgColor);
...
}
リストの背景を設定する場合は、画像を<Textview>の前に配置します
< ImageView
Android:background="@drawable/image_name"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"/>
そして、あなたが色を変更したい場合は、このようなテキストボックスの上にカラーコードを置きます
Android:textColor="#ffffff"
ビューの一部のパラメーターとArrayAdapterのデフォルトの動作を変更するだけでよい場合は、次のようにします。
import Android.content.Context;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.ArrayAdapter;
public class CustomArrayAdapter<T> extends ArrayAdapter<T> {
public CustomArrayAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
// Here all your customization on the View
view.setBackgroundColor(.......);
...
return view;
}
}
次のような子を選択できます
TextView tv = (TextView)lv.getChildAt(0);
tv.setTextColor(Color.RED);
tv.setTextSize(12);
in Android 6.0以下のようにテキストの色を変更できます
holder._linear_text_active_release_pass.setBackgroundColor(ContextCompat.getColor(context, R.color.green));
Javaこのようなコードでそれらを使用します:
_ color = getResources().getColor(R.color.mycolor);
_
getResources()
メソッドは現在のアクティビティのResourceManagerクラスを返し、getColor()
はマネージャーにリソースIDを指定して色を検索するように要求します