zoukankan      html  css  js  c++  java
  • 让Spinner中的文字居中

    如果套用simple_spinner_item或是simple_spinner_dropdown_item,然后直接在Spinner中用

    android:gravity="center"

    是无法让Spinner中的文字居中的。

    这是因为Spinner中的文字其实是套在TextView中的(参考:http://www.douban.com/note/483280526/?type=like#sep)。

    一开始我想到的一种办法:

    在spinner外面嵌套一个LinearLayout,设置android:gravity="center",这样spinner自然就居中了。这样的缺点是只能设置Spinner为Wrap_content了。

    其实可以这样:

    simple_spinner_item.xml和simple_spinner_dropdown_item.xml其实都是在sdkplatformsandroid-18data eslayout中的,那么我们可以覆写他们。

    比如这样覆写:

    把TextView中的gravity改一下,这个问题就解决了。

    另外,StackOverflow上还有人给出其他的方法

    The component that actually creates the items for the Spinner is the adapter. So you should customize it (by overriding the getView() method) to return centered TextView widgets.

    In your case, replace the new ArrayAdapter<String> ... initialization with this code:

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, NomProjets)
    {
        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            return setCentered(super.getView(position, convertView, parent));
        }
    
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent)
        {
            return setCentered(super.getDropDownView(position, convertView, parent));
        }
    
        private View setCentered(View view)
        {
            TextView textView = (TextView)view.findViewById(android.R.id.text1);
            textView.setGravity(Gravity.CENTER);
            return view;
        }
    };
  • 相关阅读:
    [BZOJ 1095] [ZJOI 2007]Hide 捉迷藏
    [BZOJ 2759] 一个动态树好题
    BZOJ 3122 SDOI2013 随机数生成器
    [NOIP集训]10月18日
    [NOIP集训]10月17日
    [NOIP集训]10月16日
    [NOI题库]1.3编程基础之算术表达式与顺序执行 题解(一)
    [NOI题库]1.2编程基础之变量定义、赋值及转换 题解
    [NOI题库]1.1编程基础之输入输出 题解
    [作业]排序算法练习(二)
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/5000814.html
Copyright © 2011-2022 走看看