java - 如何在动态微调器中添加项目之间的间距

标签 java android

我已经创建了一个简单的动态微调器,我只需要在每个项目之间添加间距和断线,我还需要知道如何添加更多属性,如项目文本颜色、项目文本大小......等,顺便说一句,这个微调器是在工具栏中创建的 这是我的带有适配器的简单代码

Spinner navigationSpinner = new Spinner(getSupportActionBar().getThemedContext());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Prests_Name);
navigationSpinner.setAdapter(adapter);

最佳答案

我有同样的要求,所以我创建了带有一些额外参数的通用适配器类。因此您可以检查并根据您的要求进行更改。

微调适配器

public class SpinnerAdapter<T> extends ArrayAdapter<T> {

    private Context context;
    private ArrayList<T> values;
    private Typeface fontLight;
    private int color, layoutId, textViewId;
    //private int fontSize;

    private boolean IsSingleLine;
    private boolean IsFirstPositionSelectable, setTextSizeLimit = true;

    public SpinnerAdapter(Context context, int resource, int textViewResourceId,
        ArrayList<T> objects) {
        super(context, resource, textViewResourceId, objects);
        this.context = context;
        this.values = objects;
        this.layoutId = resource;
        this.textViewId = textViewResourceId;
    }

    public SpinnerAdapter(Context context, int resource, ArrayList<T> objects, int color,
        boolean isSingleLine) {
        super(context, resource, objects);

        this.context = context;
        this.values = objects;
        this.color = color;
        this.IsSingleLine = isSingleLine;
    }

    @Override public int getCount() {
        return values.size();
    }

    @Override public T getItem(int position) {
        return values.get(position);
    }

    @Override public long getItemId(int position) {
        return position;
    }

    public boolean isFirstPositionSelectable() {
        return IsFirstPositionSelectable;
    }

    public void setFirstPositionSelectable(boolean enable) {
        IsFirstPositionSelectable = enable;
    }

    public void setSetTextSizeLimit(boolean setTextSizeLimit) {
        this.setTextSizeLimit = setTextSizeLimit;
    }

    public Typeface getFontLight() {
        return fontLight;
    }

    public void setFontLight(Typeface fontLight) {
        this.fontLight = fontLight;
    }

    @Override public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);

            if (layoutId == 0) {
                convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
            } else {
                convertView = inflater.inflate(layoutId, parent, false);
            }
        }

        TextView label;

        if (textViewId == 0) {
            label = (TextView) convertView.findViewById(android.R.id.text1);
        } else {
            label = (TextView) convertView.findViewById(textViewId);
        }

        if (setTextSizeLimit) {
            label.setFilters(new InputFilter[] { new InputFilter.LengthFilter(2) });
        }

        label.setSingleLine(IsSingleLine);
        label.setPaddingRelative(25, 15, 25, 15);

        if (fontLight != null)
            label.setTypeface(getFontLight());

        label.setText(values.toArray(new Object[values.size()])[position].toString());

        return label;
    }

    @Override public View getDropDownView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);

            if (layoutId == 0) {
                convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
            } else {
                convertView = inflater.inflate(layoutId, parent, false);
            }
        }

        TextView label;

        if (textViewId == 0) {
            label = (TextView) convertView.findViewById(android.R.id.text1);
        } else {
            label = (TextView) convertView.findViewById(textViewId);
        }


        //label.setPadding(30, 10, 10, 30);
        //label.setTextSize(context.getResources().getDimension(R.dimen.text_size_small));
        if (fontLight != null)
            label.setTypeface(fontLight);

        label.setSingleLine(IsSingleLine);

        label.setText(values.toArray(new Object[values.size()])[position].toString());

        return label;
    }
}

关于java - 如何在动态微调器中添加项目之间的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42700539/

相关文章:

java - Jenkins 构建中嵌入式 Mongo DB 测试的 UnknownHostException

java - 如何在 Struts2 web 应用程序中为多个登录配置 web.xml?

Java:从父级构造函数将项目添加到子级列表

java - Google AppEngine - 如何为 Google AppEngine 设置默认字符集/文件编码(到 UTF-8)

android - 添加flutter_contact插件后,Flutter App Gradle构建失败

java - 如何从 Java 调用/使用 MRI Ruby?

android,如何将一个 XML 文件包含到另一个 XML 文件中?

android - 更改抽屉导航列表文本颜色并添加图标

android - 来自服务器的数据未保存在共享首选项中

android - 帐户每分钟同步一次