对齐动态创建的textview并在android中编辑文本

时间:2016-05-04 10:27:32

标签: android alignment layoutparams

我有一个相对布局和'n'个textview和edittext。我希望对齐为

  TextView   EditText
       Button
  TextView   EditText
        Button
   TextView   EditText
         Button
  TextView   EditText
        Button
  ..........

我尝试过使用布局参数但是我得到了奇怪的结果。 这是我的代码,

 RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.linearlayoutid);
    final TextView[] myTextViews = new TextView[41];
    for (int i = 0; i < 41; i++) {
        // create a new textview
        rowTextView = new TextView(this);
        RelativeLayout.LayoutParams paramsA = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        paramsA.addRule(RelativeLayout.RIGHT_OF, rowTextView.getId());
        rowTextView.setId(i);
        // add the textview to the layout
        relativeLayout.addView(rowTextView, paramsA);
        myTextViews[i] = rowTextView;

    }

编辑文字..

    final EditText[] editTextarray = new EditText[41];
    for (int i = 0; i < 41; i++) {
        // create a new textview
        final EditText editText = new EditText(this); 
        RelativeLayout.LayoutParams paramsB = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
         editText.setText("edit");
        editText.setCursorVisible(true);
        relativeLayout.addView(editText, paramsB);
        editTextarray[i] = editText;

    }

我已经应用了layout_params,但它没有帮助。任何帮助都会很棒!!感谢

4 个答案:

答案 0 :(得分:1)

添加布局

layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/ll"
        >
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="textview"
            />
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Edittex"
            />

    </LinearLayout>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/ll"
        android:layout_centerHorizontal="true"
        android:text="button"
        />

</RelativeLayout>

在运行时添加此布局:

    View view;
    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

   for (int i = 0; i < 40; i++) {

     view= inflater.inflate(R.layout.layout, null);
     linearLayout.addView(view);
    }

答案 1 :(得分:0)

我建议您使用自定义布局并以编程方式对其进行充气。

使用您想要的输出创建一个由TextViewEditTextButton组成的布局,然后对其进行充气。

View v=LayoutInflater.from(this).inflate(R.layout.customLayout,null);

并使用变量v来引用TextViewEditTextButton

您的customLayout.xml可能是这样的:

<LinearLayout android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</LinearLayout>

在xml中将LinearLayout置于垂直方向,然后在该布局中添加此视图以创建不同的视图。

for (int i = 0; i < 20; i++) {
    View v = inflater.inflate(R.layout.customLayout, null);

    ll.addView(v);
}

答案 2 :(得分:0)

Anusha尝试使用linearlayout

如果您的设计完全相同,您应该使用listview最佳方法。

 LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearlayoutid);
        final TextView[] myTextViews = new TextView[41];
        final EditText[] editTextarray = new EditText[41];
        for (int i = 0; i < 41; i++) {
            // create a new textview
            rowTextView = new TextView(this);
            myTextViews[i] = rowTextView;
            linearLayout.addView(myTextViews[i]);

            final EditText editText = new EditText(this);
            editText.setText("edit");
            editText.setCursorVisible(true);
            editTextarray[i] = editText;
            linearLayout.addView(editTextarray[i]);

        }

答案 3 :(得分:0)

我建议您为此要求实施ListView -

根据您当前的方法,您将最终为每个按钮设置多个onClicklistener - 如果该按钮将选择与textview / edittext关联的输入数据 - 您将最终编写许多数组调用和填充< / p>

Listview - 点击你可以触发一个onClickListener的区别

的任何项目

PS:错误的设计重复textview / edittext下方的按钮如果按钮预期执行相同/类似功能说保存 - 只需要textview / edittext的列表视图 - 工具栏上或表单下方的常用按钮操作。