0

最近、カスタム ビューを更新したのでEditText、キャンバスの中央に を追加できる可能性があります (いわば)。

以前のカスタム ビューと同じ方法で、onDrawコードをdispatchDrawカスタム作品に追加した後。LinearLayout

EditTextでは、レイアウトの真ん中にスマックを追加するにはどうすればよいでしょうか?

これまでのところ、私はこれを試しています:

EditText edit = new EditText(getContext());
edit.setText("My EditText");
edit.setTextSize((int)Math.ceil(thickness/2));
edit.setWidth((int)(diameter*0.07f));
edit.setX(centerX);
edit.setY(centerY);

addView(edit);

いくつかの変数を許してください。それらはあまり重要ではありませんがEditText、X 座標と Y 座標を使用して追加しようとしています。

助けてくれてありがとう。

アップデート:

コンストラクターを更新LinearLayoutしてファイルを膨張させ、comment_edit.xmlこの方法で動作させることができるかどうかを確認しました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_comment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/edittext_comment"
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content" 
        android:inputType="text"
        android:imeOptions="actionDone" />

</LinearLayout>

コンストラクターのLinearLayout抜粋は次のとおりです。

LayoutInflater inflater = LayoutInflater.from(context);
LinearLayout view = (LinearLayout) inflater.inflate(R.layout.comment_edit, this, false);
EditText edit = (EditText) view.findViewById(R.id.edittext_comment);
edit.setText("Add Comment");
edit.setX(112);
edit.setY(117);
addView(view);

私も試しました:

LayoutInflater inflater = LayoutInflater.from(context);
LinearLayout view = (LinearLayout) inflater.inflate(R.layout.comment_edit, this, false);
EditText edit = (EditText) view.findViewById(R.id.edittext_comment);
edit.setText("Add Comment");
view.setX(112);
view.setY(117);
addView(view);

EditTextまだ表示されない

4

1 に答える 1

0

答えがまだ見つからない場合。動的に作成されるすべてのビューには、レイアウトパラメータ(WRAP_CONTENT、FILL_PARENTなど)が必要です。そのため、表示されていません。詳細については、それに応じて質問を編集してください。例は次のとおりです。

editText.setLayoutParams(new LayoutParams(WRAP_CONTENT,WRAP_CONTENT));

編集:

ここでの問題は、編集テキストが中央に配置されていないことです。わかりました。概要を説明しますが、やるべきことがたくさんあるので、これから研究する必要があると思います。まず第一に、LinearLayoutはそれが言うことであり、ビューを垂直または水平にスタックするレイアウトです。テキストの位置は、画面の実際のピクセルではなく、他の特定のレイアウトパラメータで指定する必要があります。Gravityを例にとると、レイアウトの内部ビューを中央、左などに揃えます。LinearLayoutのgravityプロパティを追加します。

お役に立てば幸いです

于 2012-07-03T17:43:02.653 に答える