【问题标题】:trying to change the font size in a gridview in android试图在android的gridview中更改字体大小
【发布时间】:2013-04-10 12:41:02
【问题描述】:

我正在尝试在我的 android 应用程序中更改我的 gridview 的字体大小。

这是我制作gridview的代码:

GridView gridview = (GridView)findViewById(R.id.gridView);
        ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(
                this,
                R.layout.customstyle, 
                Rows );

        gridview.setNumColumns(14);
        gridview.setAdapter(arrayadapter);

这是我的自定义样式 .xml 文档中的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >

    <TextView
        android:id="@+id/grid_item_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="8dip" >
    </TextView>
</LinearLayout>

当我尝试让它应用我的样式时,该程序当前崩溃,但它在使用标准样式时可以正常工作。 所以有人可以帮我修复这种风格,这样我就可以设置字体大小 谢谢

【问题讨论】:

  • 发布 logcat 跟踪.. 你应该使用 sp 而不是 dp 你正在使用 TextView 的地方
  • 它说:您必须为 TextView 提供资源 ID
  • 已发布答案,检查一次

标签: android gridview styles font-size


【解决方案1】:

ArrayAdapter 应该具有TextView 类型的资源ID。

删除父LinearLayout,你的布局应该是这样的

这样使用

customStyle.xml

<?xml version="1.0" encoding="utf-8"?>
  <TextView
         xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/grid_item_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="8sp" >
    </TextView>

将您的自定义布局替换为上述将解决您的问题。

【讨论】:

  • 感谢您已修复它:)
【解决方案2】:

您可以像这样创建自己的自定义适配器:

public class MyAdapter extends BaseAdapter{

private Context mContext;
private String[] text = {};
private Integer[] mThumbIds = {};
public MyAdapter(Context c,String[] text)
{
    mContext = c;
    this.text = text;
}

public int getCount()
{
    return mThumbIds.length;
}

public Object getItem(int position)
{
    return position;
}

public long getItemId(int position)
{
    return position;
}

public View getView(int position, View convertView, ViewGroup parent)
{
    View myView = convertView;
    if (convertView == null)
    {
        LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        myView =li.inflate(R.layout.grid_item, null);
        TextView tv = (TextView)myView.findViewById(R.id.grid_itemTxt);
        tv.setText(text[position]);
    }
    return myView;
}

GridItem 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id = "@+id/gridItem"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation= "vertical"
    android:gravity="center_horizontal" >

    <TextView 
        android:id="@+id/grid_itemTxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="#6075B2">
    </TextView>
</LinearLayout>

然后在你的 onCreate() 方法上:

private GridView grid;
private String text[] = {"hello","world","here","is","a","grid","view"};
grid = (GridView)findViewById(R.id.yourGridLayoutXml);
grid.setAdapter(new MyAdapter(this, text));

注意MyAdapter是一个扩展BaseAdataper的java类

【讨论】:

  • 如果你想在网格上设置 Images+textView.. 告诉我,我会编辑我的答案
猜你喜欢
  • 1970-01-01
  • 2011-03-20
  • 2012-02-14
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2012-06-12
相关资源
最近更新 更多