当前位置: 首页 > 知识库问答 >
问题:

listView的自定义视图-字体

柯昆杰
2023-03-14

我在为我的ListView设置自己的字体时遇到了问题,我不知道如何使用自己的Adapter类以及我需要什么xml(除了我放在ListView中的那个)。我希望(在ListView中)只是水平居中使用自己的字体。那是我的适配器:

public class MyAdapter extends BaseAdapter {

private String[]       objects; // no objects just String array
private final Context   context;

public MyAdapter(Context context, String[] objects) {
    this.context = context;
    this.objects = objects;
}

@Override
public int getCount() {
    return objects.length;
}

@Override
public Object getItem(int position) {
    return objects[position];
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    Object obj = objects[position];

    TextView tv = new TextView(context);
    tv.setText(obj.toString());
    Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/kolejRogFont.ttf");
    tv.setTypeface(tf);

    return tv;
}
}

它在呼唤ista.java

ListView lv = new ListView(this);
    lv.setAdapter(new MyAdapter(this, listview_array));

代码来自StackOverFlow的另一个主题。

>

  • 我在第行中遇到错误(未定义的方法):

    字体tf=Typeface.createFromAsset(getAsset(),"fonts/kolejRogFont.ttf");

    2、屏幕上没有显示任何内容。我应该为ListView布局创建XML吗?它应该包含什么?

  • 共有3个答案

    郭琨
    2023-03-14

    关于为列表视图设置边距的答案,应在列表\u view\u项目中设置边距。zml。e、 g.在线性布局中设置边距或填充。

    裴欣荣
    2023-03-14

    getAssets()来自上下文,因此它对适配器没有定义。尝试使用此选项:

    Typeface tf = Typeface.createFromAsset(context.getAssets(),"fonts/kolejRogFont.ttf");
    

    编辑:作为旁注,我会将该行移动到构造函数并将tf设置为类变量。真的没有必要在每次获得视图时加载字体。

    商皓
    2023-03-14

    将MyAdapter代码更改为:

    public class MyAdapter extends BaseAdapter {
    
    Typeface tf;
    private String[]       objects; // no objects just String array
    private final Context   context;
    
    public MyAdapter(Context context, String[] objects) {
        this.context = context;
        this.objects = objects;
        tf = Typeface.createFromAsset(context.getAssets(),"fonts/kolejRogFont.ttf");
    }
    ////Your code ...
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
        Object obj = objects[position];
    
        TextView tv = new TextView(context);
        tv.setText(obj.toString());
        tv.setTypeface(tf);
        return tv;
    }
    }
    
     类似资料:
    • 英文原文:http://emberjs.com/guides/views/customizing-a-views-element 视图在页面上表现为一个单一的DOM元素。通过修改tagName属性,可以改变视图生成的元素的类型。 1 2 3 App.MyView = Ember.View.extend({ tagName: 'span' }); 另外,还可以通过设置一个字符串数组到clas

    • 问题内容: 我浏览了教程并进行了搜索,但仍然不明白该怎么做, 当扩展在我的android应用程序中创建自定义listView 时,此方法有效。因此,我无法完全按照需要编辑“自定义”列表视图。 我需要知道何时调用此方法以及参数的含义。 如果有人可以解释以下方法很好。谢谢 问题答案: getView() :如规范中所述,getView方法将数据显示在指定位置。因此,当您设置适配器并滚动时,将调用lis

    • 英文原文:http://emberjs.com/guides/views/defining-a-view/ 你可以使用Ember.View来渲染一个Handlebars模板并将它插入到DOM中。 为了告诉视图要用哪个模板,可以设置它的temaplateName属性。例如,如果我有一个像这样的<script>标签: 1 2 3 4 5 6 7 <html> <head> <script

    • 问题内容: 我有一个 : 问题答案: 首先应注意,通过简单地调整系统提供的标注的属性,但 自定义左右附件(通过rightCalloutAccessoryView和leftCalloutAccessoryView),就可以对标注进行最简单的更改。您可以在中进行配置viewForAnnotation。 从iOS 9开始,我们可以使用detailCalloutAccessoryViewwhich来用可能

    • 本文向大家介绍Android 创建自定义视图,包括了Android 创建自定义视图的使用技巧和注意事项,需要的朋友参考一下 示例 如果需要完全自定义的视图,则需要子类View(所有Android视图的超类),并提供自定义的sizing(onMeasure(...))和drawing(onDraw(...))方法: 创建您的自定义视图框架:每个自定义视图的基本相同。在这里,我们为自定义视图创建框架,

    • 我尝试做自定义组件。我扩展了类,并在覆盖方法中做了一些绘图。为什么我需要覆盖?如果我没有,一切都看起来是正确的。有人可以解释一下吗?我应该如何编写我的方法?我看过几个教程,但每一个都比另一个有一点不同。有时他们在最后调用,有时他们使用并没有调用它。区别在哪里? 毕竟,我想使用几个完全相同的组件。我将这些组件添加到我的XML文件中,但我不知道它们应该有多大。我想稍后在自定义组件类中设置它的位置和大小