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 に答える