关于 Spinner 的字体的设置 – 热爱改变生活
我的GitHub GitHub |     登录
  • If you can't fly, then run; if you can't run, then walk; if you can't walk, then crawl
  • but whatever you do, you have to keep moving forward。
  • “你骗得了我有什么用,这是你自己的人生”
  • 曾有伤心之地,入梦如听 此歌

关于 Spinner 的字体的设置

Android sinvader 5365℃ 0评论

(spinner 字显示不完全,设置 style 后 TextView 的高度过小)

昨天写 Spinner 的时候应为客户的要求需要给 Spinner 设置 style,来改变点击前和点击后 Spinner 的样式,添加 style 很容易
代码如下:

<!-- spinner --> 
<style name="spinner_style" type="text/css">
 <item name="android:background">@drawable/spinner_selector</item> 
 <item name="android:paddingLeft">5dip</item>
</style>

对应的 drawable:

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
 <item android:state_pressed="true" android:drawable="@drawable/spinner_press" /><!--按下时效果-->
 <item android:state_pressed="false" android:drawable="@drawable/spinner" /><!--默认效果--> 
</selector>

spinner_press 和 spinner 是两张.9 图片
但是这样设置之后问题出来了,如图: spinner 最中间的那个红框,就是要显示文字的地方,但是因为高度太小,显示不完全。 有两个办法来解决:
1. 这个方法比较简单,在 xml 中写 spinner 的时候设置 padding 为 0 就可以了,但是这种做法只能修改为正常显示,如果要修改文字大小或者背景啊什么的话,这种难以实现。
2. 重写 adapter,代码如下:

private class SpinnerAdapter extends ArrayAdapter<String> {
        Context context;
        String[] items = new String[] {};
        public SpinnerAdapter(final Context context, final int textViewResourceId, final String[] objects) {
            super(context, textViewResourceId, objects);
            this.items = objects;
            this.context = context;
        }
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            //下拉出来的文本框中的内容
            if (convertView == null) {
                LayoutInflater inflater = LayoutInflater.from(context);
                convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
            }
            TextView tv = (TextView) convertView.findViewById(android.R.id.text1);
            tv.setText(items[position]);
            tv.setTextColor(Color.BLACK);
            tv.setTextSize(15);
            return convertView;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            //显示的文本框中的内容,在这里自己写一个 xml 文件,包含一个 TextView(可以有其他的)
            //然后设置其中的字体的样式就可以了
            if (convertView == null) {
                LayoutInflater inflater = LayoutInflater.from(context);
                convertView = inflater.inflate(R.layout.item_spinner_text, parent, false);
            }
            TextView tv = (TextView) convertView.findViewById(R.id.spinner_text);
            tv.setText(items[position]);
            tv.setTextColor(Color.BLACK);
            tv.setTextSize(15);
            return convertView;
        }
    }
¥ 有帮助么?打赏一下~

转载请注明:热爱改变生活.cn » 关于 Spinner 的字体的设置


本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » 关于 Spinner 的字体的设置

喜欢 (0)
发表我的评论
取消评论
表情

如需邮件形式接收回复,请注册登录

Hi,你需要填写昵称和邮箱~

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址