0

特定の座標でキャンバスに EditText を追加したい。このようなもの :ここに画像の説明を入力

私はコードを使用しようとしました:

        LinearLayout layout = new LinearLayout(context);

        EditText textView = new EditText(context); 
        textView.setVisibility(View.VISIBLE);
        textView.setText("Hello world");

        layout.addView(textView);

        layout.measure(canvas.getWidth(), canvas.getHeight());
        layout.layout(0, 0, canvas.getWidth(), canvas.getHeight());
        layout.setGravity(Gravity.BOTTOM);

        layout.draw(canvas);

しかし、この EditText はクリック時にキーボードを表示しませんでした。手伝って頂けますか?

4

1 に答える 1

0

本当にキャンバスに描く必要があると仮定すると...

res/layout フォルダー内に新しい canvaslayout.xml を作成します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="5" >
        <requestFocus />
    </EditText>
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/editText1"
        android:layout_toRightOf="@+id/editText1"
        android:text="Edit Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>

コードも変更

LinearLayout layout = findViewById(R.layout.canvaslayout); 
//LinearLayout layout = youractivity.findViewById(R.layout.canvasLayout); 
layout.draw(canvas);

プログラムで:

XML を使用したくない (理由がわからない) 場合は、この方法を使用できます。線形レイアウトを相対レイアウトに変更し、このようなものを使用してビューを別のビューの右側に配置します。

RelativeLayout.LayoutParams relativeLayoutParams=
            new RelativeLayout.LayoutParams((RelativeLayout.LayoutParams.WRAP_CONTENT),(RelativeLayout.LayoutParams.WRAP_CONTENT));//create params for new textview

    relativeLayoutParams.addRule(RelativeLayout.RIGHT_OF, textView.getId());//to align the textview side by side
于 2013-03-02T21:16:09.710 に答える