通过编程创建的网格视图内容的文本颜色

时间:2014-04-08 17:56:13

标签: android gridview android-gridview

我理解如何在设计视图中执行此操作,但我不确定如何基于以编程方式创建的元素创建样式。我按照教程,这里是我所在的地方:

我有一个网格视图,由字符串数组填充,如下面的代码所示:

...
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的项目的文本颜色?

2 个答案:

答案 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);