2013-03-02 244 views
0

我想将EditText添加到画布中的特定坐标。 事情是这样的:enter image description here将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上不上单击显示键盘。你可以帮我吗?

+2

您能指定谁已初始化画布及其用法。你只想要下面一行的编辑文本?作为这个简单的任务,不需要执行画布。 – 2013-03-02 21:04:49

+0

我需要dinamically创建不同数量的此视图(editText +文本),所以我选择使用此元素创建我的自定义视图,使未来的工作更容易 – 2013-03-02 21:20:08

回答

0

假设你真的需要绘制在画布上...

您的RES /布局文件夹内创建一个新的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); 

Programmaticly:

如果你不想使用XML(我不明白为什么不),你可以使用this方法。您可以将线性布局更改为相对布局,并使用类似的方法将视图右移到另一个视图。

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 
+0

这是个好主意,但我想改变EditText的坐标任务。有时我需要:EditText + TextView;有时我需要:TextView + EditText + TextView;或TextView + EditText;所以我不能使用xml文件,因为我需要随时更改EditText的坐标 – 2013-03-02 21:22:16

+0

您可以针对每种可能性使用不同的XML布局文件。 – 2013-03-02 21:27:26

+0

当我使用XML文件 - 崩溃在layout.draw(画布);与NullPointerException: – 2013-03-02 21:50:34

相关问题