android开发分享Android的微调不同布局的“下拉状态”和“closures状态”?

我的布局中有一个Android微调视图。 我希望微调器在closures时只显示一个文本项目,但是当用户点击它时(即打开微调器对话框),我想显示每个项目的更多信息,包括图标和附加描述文本视图。 因为它现在是微调在两种状态显示相同的布局(图标,标题+描述)。

如果我将一个ArrayAdapter附加到微调,那么我可以访问一个名为“setDropDownViewResource”的东西,但这不一定是我所需要的,因为我的微调数据是从一个光标而不是从任何types的数组中获取的(截至目前,创build了我自己的适配器,扩展了BaseAdapter)。

任何人都可以帮助我?

    您必须为Spinner创build一个自定义Adapter类,并覆盖正常closures视图和getDropDownView()两个方法的getView()方法。 这两个方法都必须为单个元素返回一个View对象。

    看看这个教程,它可能会帮助你入门。

    我也有问题。 而不是压倒class级,我有一个更简单的方法来做到这一点。

    但首先您需要了解适配器构造函数中的资源ID和setDropDownViewResource中的另一个资源ID之间的区别。 例如,

     SimpleAdapter adapter = new SimpleAdapter(ab.getThemedContext(), data, R.layout.actionbar_dropdown, new String[] { "EventID", "Icon" }, new int[] { R.id.event_id, R.id.icon }); adapter.setDropDownViewResource(R.layout.actionbar_list_item); 

    R.layout.actionbar_dropdown是spinner的风格,而R.layout.actionbar_list_item是每一个列表项目。 我在这里使用SimpleAdapter,因为如果我使用ArrayAdapter,xml只能是单个TextView。 R.layout.actionbar_list_item包含一个TextView,它的id是event_id,ImageView的id是图标。 R.layout.actionbar_dropdown与actionbar_list_item几乎完全相同。 但后者的ImageView的可见性被设置为GONE。

    通过这种方式,每个列表项都有一个textview和一个imageview,但是你只能在微调器上看到一个textview。

    使用由Flo链接的教程的代码,我创build了以下CustomSpinnerAdapter以显示两个不同的string集,一个是显示项目时,另一个是不显示的。 我希望它可以帮助别人。

     public class CustomSpinnerAdapter extends ArrayAdapter<String> { Context mContext; int mTextViewResourceId; String[] mObjects; String[] mShortNameObjects; public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, String[] shortNameObjects) { super(context, textViewResourceId, objects); mContext = context; mTextViewResourceId = textViewResourceId; mObjects = objects; mShortNameObjects = shortNameObjects; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); TextView row = (TextView) inflater.inflate(mTextViewResourceId, parent, false); row.setText(mObjects[position]); return row; } @Override public View getView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } public View getCustomView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); TextView row = (TextView) inflater.inflate(mTextViewResourceId, parent, false); row.setText(mShortNameObjects[position]); return row; } } 

    片段内的用法:

     CustomSpinnerAdapter mSpinnerAdapter = new CustomSpinnerAdapter(getActivity(), R.layout.spinner_item, getResources().getStringArray(R.array.action_filter), getResources().getStringArray(R.array.action_filter_short_names)); 

    最后,微调项目的布局:

    spinner_item.xml

     <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dip" android:gravity="left" android:textColor="@color/navdraw_list_item_background_default" android:padding="5dip" /> 

    只能使用替代布局设置下拉视图资源:

     ArrayAdapter<String> genderAdapter = new ArrayAdapter<>(this, R.layout.adapter_spinner_white, Constants.GENDER); genderAdapter.setDropDownViewResource(R.layout.adapter_spinner_white_dropdown); view.setAdapter(genderAdapter); 

    对我来说,这只是一个额外的填充左边的布局,因为我的微调背景是一个圆形的drawable,需要这个额外的空间。

    以上就是android开发分享Android的微调不同布局的“下拉状态”和“closures状态”?相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/513954.html

      (0)
      上一篇 2020年11月29日
      下一篇 2020年11月29日

      精彩推荐