如何在Android中的微调器中居中文本

时间:2014-06-19 23:10:05

标签: android

我的LinearLayour中有一个Spinner。

我试图将文本置于微调器中:

enter image description here

这是我对该元素的XML:

 <Spinner
    android:id="@+id/project_Spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginRight="50dp"
    android:layout_marginLeft="50dp"
    android:padding="1dip"


    android:prompt="@string/spinner_title"
/>

活动中微调器的声明:

// Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, NomProjets);

    // Drop down layout style - list view with radio button
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // attaching data adapter to spinner
    spinner.setAdapter(dataAdapter);

谢谢,

2 个答案:

答案 0 :(得分:8)

实际为Spinner创建项目的组件是适配器。所以你应该自定义它(通过覆盖getView()方法)来返回居中的TextView小部件。

在您的情况下,请使用以下代码替换new ArrayAdapter<String> ...初始化:

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;
    }
};

答案 1 :(得分:2)

Matiash的回答有效。这是另一种方式:

实际上,微调器中的文本包含在TextView中,因此我们可以覆盖android.R.layout.simple_spinner_item.xml(位于sdk \ platforms \ android-xx \ data \ res \ layout),创建/ layout文件夹中的新xml,添加一个属性: 机器人:比重=&#34;中心&#34;在TextView中心创建文本。

such like this: