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

标签 java android view spinner android-inflate

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

我尝试使用 XML,但填充和文本大小在不同的屏幕尺寸上显示不同。我需要根据屏幕的尺寸执行一些简单的计算。我尝试膨胀 View ,但我发现无法将 View 转换回 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);
    }
}

最佳答案

我向 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 效果很好,因为它不会对填充应用任何最小值。

关于java - 以编程方式修改微调器的下拉框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17540123/

相关文章:

java - 如何以编程方式正确设置RelativeLayout的设置?

javascript - 在 Marionette 中将多个 View 附加到某个区域的优雅方式

Android AppwidgetProvider 从未调用过

java - RecyclerView 以编程方式单击

java - java中的线程和同步

java - 选定的变量在乒乓球游戏中不会改变 - Swing

android - 如何在android中发送 SOAP 请求?

android - 应在我的应用程序中进行哪些更改(其中没有广告)以避免违反 YouTube API 服务条款?

mysql - 与 mysql 表相关的 View

java - 如何在 Spring 中的 REST 服务的 HandlerInterceptor 中填充 ModelAndView