以编程方式修改微调器的下拉框

时间:2013-07-09 04:48:16

标签: java android view spinner android-inflate

如何以编程方式更改微调器下拉框中项目的PaddingTextSize

我尝试使用XML,但填充和文本大小在不同的屏幕尺寸上显示不同。我需要根据屏幕尺寸执行几个简单的计算。我试图给视图充气,但我发现无法将视图转换回XML或将其应用到我的适配器。

以下是我的微调器代码:

View view = getLayoutInflater().inflate(R.layout.list_items, null);
view.setPadding((int) (screenWidth * 0.1), (int) (screenHeight * 0.2), (int) (screenWidth * 0.1), (int) (screenHeight * 0.2));
if (portrait)
    spnVerbs.setAdapter(new MySpinnerAdapter(R.layout.list_items, CHOICES));
else
    spnVerbs.setAdapter(new MySpinnerAdapter(R.layout.list_items1, CHOICES));

和MySpinnerAdapter.class

class MySpinnerAdapter extends ArrayAdapter<String>
{
    MySpinnerAdapter(int dropDownResource, String[] choices)
    {
        super(Start.this, dropDownResource, choices);
    }

    public View getView(int position, View convertView, ViewGroup parent)
    {
        View row = convertView;
        if (row == null)
            row = super.getView(position, convertView, parent);
        if (parent.getWidth() > 0)
        {
            TextView label = (TextView) row.findViewById(android.R.id.text1);
            label.setIncludeFontPadding(false);
            label.setTextSize(TypedValue.COMPLEX_UNIT_PX, SetTextSize(label.getText().toString(), parent.getWidth() - paddingLeft * 2 - paddingLeftExtra * 2, (int) fieldHeight - paddingTop * 2 - paddingTopExtra * 2));
            label.setPadding(paddingLeft + paddingLeftExtra, 0, 0, 0);
        }
        return(row);
    }
}

2 个答案:

答案 0 :(得分:3)

我在MySpinnerAdapter添加了以下功能,现在效果很好:

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
    View view = super.getDropDownView(position, convertView, parent);
    TextView textView = (TextView) view.findViewById(android.R.id.text1);
    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, maxTextSize);
    textView.setPadding(paddingLeft + paddingLeftExtra, paddingTop + paddingTopExtra, paddingLeft + paddingLeftExtra, paddingTop + paddingTopExtra);
    return view;
}

此外,我应用了simple_spinner_item,而不是simple_list_item_1或我自己的XML文件。 simple_spinner_item效果很好,因为它不会对填充应用任何最小值。

答案 1 :(得分:0)

首先为你的微调器设置一个适配器:

ArrayAdapter<String> ageAdapter; = new ArrayAdapter<String>(this, R.layout.spinner_item, age);
yourSpinner.setAdapter(yourAdapter);

现在在名为spinner_item的布局文件夹中创建一个xml文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinnerText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:textSize="17sp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@drawable/tool1" />

这可能对你有帮助..