我理解如何在设计视图中执行此操作,但我不确定如何基于以编程方式创建的元素创建样式。我按照教程,这里是我所在的地方:
我有一个网格视图,由字符串数组填充,如下面的代码所示:
...
gridView = (GridView) findViewById(R.id.gridView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strData);
gridView.setAdapter(adapter);
字符串数组的每个元素都可以很好地填充网格。
如何设置添加到gridView的项目的文本颜色?
答案 0 :(得分:7)
2个解决方案:动态或使用自定义布局。
动态:当您覆盖ArrayAdapter中的setTextColor(...)
方法时,可以使用getView()
设置文本颜色,如下所示:
gridview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strData) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text = (TextView) view.findViewById(android.R.id.text1);
text.setTextColor(getResources().getColor(R.color.my_color));
return view;
}
});
自定义布局:这是最简单的方法,可以将自定义布局构建为:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:textColor="@color/my_color"
android:background="@drawable/my_background"
android:padding="5sp"
android:singleLine="true"
android:gravity="center" />
然后,将其设置为适配器:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_layout_above, strData);
即使你动态地想要这个,我也不确定,但我认为使用自定义布局会更好。
希望这会有所帮助。
答案 1 :(得分:0)
创建自定义布局并将其提供给ArrayAdapter
。目前,您提供的是默认布局android.R.layout.simple_list_item_1
。像这样创建一个新的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/flFragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
然后根据你的需要设计风格。
你可以像这样使用它:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_layout, R.id.tvText, strData);