Spinner Android中的可滚动选定项目文本

时间:2014-10-22 10:08:27

标签: android android-layout spinner

它的第二天和斗争仍在继续...... :( 我有一个微调器,其中有大量文本长度的项目..所以我想添加eclippse和marque.so所选项目将可滚动..

在选择后需要旋转器的选定项目滚动。微调器的宽度小于其选择的文本。每当选择一个项目时,它必须在微调器显示中无限滚动。我可以在TextView中获取文本到选取框,但不能获得微调器选定项的文本。任何线索?

我有 Spinner

private Spinner spinProcess;

spinProcess = (Spinner)findViewById(R.id.spinSearch);

和此微调器的XMl如下所示

<Spinner
                android:id="@+id/spinSearch"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.5"
                android:background="@drawable/add_project_drop_down_enabled"
                android:ellipsize="marquee"
                android:marqueeRepeatLimit="marquee_forever"
                android:paddingLeft="10dp"
                android:paddingRight="35dp"
                android:spinnerMode="dropdown"
                android:scrollHorizontally="true"
                android:textColor="@color/spinnerText" />

罪人的适配器如下

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(HelpActivity.this,android.R.layout.simple_spinner_dropdown_item);
            for(int i=0;i<SpinnerLIst.size();i++)
            {
                arrayAdapter.add(SpinnerLIst.get(i));
            }

            spinProcess.setAdapter(arrayAdapter);

我尝试修改android.R.layout.simple_spinner_dropdown_item ..但没有一个对我有用? 关于这个问题已经有很多问题了......但没有这样的解决方案对我有用......

2 个答案:

答案 0 :(得分:0)

我尝试使用自定义适配器进行微调器

item_row.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal"
        android:lines="1"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:text="Simple application that shows how to use marquee, with a long text"
        android:textColor="#ff4500" />

</RelativeLayout>

适配器:

public class SpinnerAdapter extends BaseAdapter {

    private Context mContext;
    private List<String> albumData;
    private static LayoutInflater inflater = null;

    public SpinnerAdapter(Context context, List<String> albumList) {
        mContext = context;
        albumData = albumList;

        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return albumData.size();
    }

    public Object getItem(int position) {
        return position;
    }

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

    public class ViewHolder {

        private TextView albumName;

    }

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

        ViewHolder holder = null;
        try {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.item_row, null);

                holder = new ViewHolder();

                holder.albumName = (TextView) convertView
                        .findViewById(R.id.textView);

                convertView.setTag(holder);
            } else {

                holder = (ViewHolder) convertView.getTag();
            }

            holder.albumName.setText(albumData.get(position));
            holder.albumName.setSelected(true);


        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return convertView;
    }
}

主要活动:

public class MainActivity extends Activity {

    private Spinner spin;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo2);
        spin = (Spinner) findViewById(R.id.spinSearch);
        mContext = this;

        List<String> item = new ArrayList<String>();

        item.add("Item 1");
        item.add("Item 1 setAnimationListener setAnimationListener setAnimationListener item 1");

        SpinnerAdapter adapter = new SpinnerAdapter(mContext, item);

        spin.setAdapter(adapter);
    }
}

答案 1 :(得分:0)

它也在我的最后工作。 答案提供了我的Meenal Sharma为我工作。 重要的一点是添加RelativeLayout而不是使用

android:lines="1"
android:singleLine="true"

布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" >
     <CheckedTextView
          android:id="@+id/textView"
          style="?android:attr/spinnerDropDownItemStyle"
          android:singleLine="true"
          android:layout_width="wrap_content"
          android:layout_height="30dp"
          android:textSize="19sp"
          android:paddingLeft="1dp"
          android:scrollHorizontally="true"
          android:marqueeRepeatLimit="marquee_forever"
          android:ellipsize="marquee"/>
</RelativeLayout>