0

我最近更新了一个自定义视图,因此我可能会EditText在画布的中心添加一个(可以这么说)。

以与我之前的自定义视图相同的方式将我的onDraw代码添加到dispatchDraw我的自定义作品后。LinearLayout

现在,如何EditText在布局中间添加一个 smack?

到目前为止,我正在尝试这个:

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 的重力属性。

我希望它有帮助

于 2012-07-03T17:43:02.653 回答