0

我正在开发一个需要绘制用户签名的应用程序。单击按钮时,我需要显示上下文菜单,用户可以在其中选择要绘制的线条粗细。谁能帮我创建具有不同线条粗细的上下文菜单。即我想要一条最粗的线作为上下文菜单的第一项,而厚度最低的线作为上下文菜单的最后一项。请帮我。

4

1 回答 1

0

您可以显示 AlertDialog 而不是上下文菜单,以便在单击按钮时选择线条粗细。

例如。

public void lineButtonClick(View v) {
                    Builder builder = new Builder(this);
                    builder.setTitle("Line Thickness");
                    builder.setAdapter(new LineAdapter(this), new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // here you get index of clicked item in "which" parameter
                        }
                    });
                    builder.create().show();
                }

                class LineAdapter extends BaseAdapter {
                    // these are the line images with different thickness
                    int lineIds[] = {
                        R.drawable.line1, R.drawable.line2, R.drawable.line3, R.drawable.line4, R.drawable.line5    
                    };

                    @Override
                    public int getCount() {
                        return lineIds.length;
                    }

                    @Override
                    public Object getItem(int arg0) {
                        return arg0;
                    }

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

                    @Override
                    public View getView(int position, View convertView, ViewGroup parent) {
                        ViewHolder holder;
                        if(convertView == null) {
                            convertView = getLayoutInflater().inflate(R.layout.raw_line, null);
                            holder = new ViewHolder();
                            holder.imgLine = (ImageView)convertView.findViewById(R.id.imgLine);
                            convertView.setTag(holder);
                        } else {
                            holder = (ViewHolder) convertView.getTag();
                        }

                        holder.imgLine.setImageResource(lineIds[position]);
                        return convertView;
                    }

                    class ViewHolder {
                        ImageView imgLine;
                    }
                }

    // raw_line.xml

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

        <ImageView
            android:id="@+id/imgLine"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

    </LinearLayout>
于 2012-05-24T06:33:10.090 回答