以编程方式将TextView添加到现有XML文件中

时间:2015-08-24 22:59:56

标签: java android xml

我的主屏幕显示来自用户输入的信息。

现在,除了" Kool"之外,此屏幕上的所有内容都使用XML添加。左上角的TextView。现在我想要一种从用户那里获取信息并将其添加到第一行信息下面的方法。

我已经整理出了用户输入的屏幕,问题实际上是让布局变得完美。现在我添加了#34; Kool" TextView以编程方式但布局错误。

我怎样才能这样做,以及#34; Kool" TextView位于日期" 20/08/15"之下。每次我使用setHeight方法时,它都会使TextView不可见。

代码:

 public class AnalysisPage extends Activity {

Button savebutton,cancelbutton;
EditText dateinput,weightinput,repsinput;
int dd,mm,yy;

private TextView texty = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dumbbellpress);
}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions,menu);
    return super.onCreateOptionsMenu(menu);

}
@Override
public boolean onOptionsItemSelected(MenuItem item){


    switch (item.getItemId()){
        case R.id.addinfo:
            Dialog dialog = new Dialog(AnalysisPage.this);
            dialog.setTitle("    Enter your STATS brah");
            dialog.setContentView(R.layout.datainput);

            dateinput = (EditText)dialog.findViewById(R.id.editDate);
            final Calendar c = Calendar.getInstance();
            dd = c.get(Calendar.DAY_OF_MONTH);
            mm = c.get(Calendar.MONTH);
            yy = c.get(Calendar.YEAR);

            dateinput.setText(new StringBuilder().append(dd).append("/").append(mm+1).append("/").append(yy));

            dialog.show();


            weightinput = (EditText)dialog.findViewById(R.id.editWeight);
            repsinput = (EditText)dialog.findViewById(R.id.editReps);

            savebutton = (Button)dialog.findViewById(R.id.btnSave);
            cancelbutton = (Button)dialog.findViewById(R.id.btnCancel);

            savebutton.setOnClickListener(new View.OnClickListener() {



                @Override
                public void onClick(View view) {
                    RelativeLayout views = (RelativeLayout)findViewById(R.id.xxx);

                    texty = new TextView(AnalysisPage.this);
                    texty.setTextSize(28);
                    texty.setText("Kool");



                    views.addView(texty);

                }
            });

            cancelbutton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    dialog.cancel();
                }
            });

            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

XML代码:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent" android:weightSum="1" android:id="@+id/statslayout">

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" android:id="@+id/xxx">

    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="100dp" android:id="@+id/tableRow3" android:layout_alignParentTop="true"
            android:layout_alignParentStart="true" android:layout_marginStart="72dp">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="Dumbbell Press Stats!"
                android:id="@+id/textView"/>
    </TableRow>

    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="100dp" android:id="@+id/tableRow"
            android:layout_alignParentTop="true" android:layout_alignEnd="@+id/tableRow3"
            android:layout_marginTop="49dp" android:layout_alignBottom="@+id/tableRow3">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Date"
                android:layout_weight="0.22"
                android:id="@+id/btnDate"
               />
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="  Weight"
                android:layout_weight="0.22"
                android:id="@+id/txtWeight"
                />

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="  Reps"
                android:layout_weight="0.22"
                android:id="@+id/btnReps"
               />


    </TableRow>
    <TableRow
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_below="@+id/tableRow" android:layout_alignParentStart="true" android:id="@+id/tableRow4">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="20/08/15"
                android:id="@+id/textView2" android:layout_below="@+id/tableRow"
                android:layout_alignStart="@+id/tableRow3"/>
    </TableRow>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="  8"
            android:id="@+id/textView7"
            android:layout_marginEnd="82dp" android:layout_below="@+id/tableRow"
            android:layout_alignEnd="@+id/tableRow3"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="50kg"
            android:id="@+id/textView6"
            android:layout_marginStart="43dp"
            android:layout_below="@+id/tableRow3" android:layout_toEndOf="@+id/tableRow4"/>
</RelativeLayout>

我的目标(梦想)是通过使用Java我制作完整格式完整的行,其中包含日期,重量和代表在他们尊重的列中。多行或使用Java完美格式化。

图片(这是XML而非Java)

1 个答案:

答案 0 :(得分:2)

不是以编程方式添加TextView,而是使用ListView。这将完全解决您的问题。您将使用ListView将其设置的自定义适配器setAdapter()作为其适配器(提供列表数据),并在每次单击添加了按钮的按钮时添加新的行元素新东西。这将意味着替换您的TableRow位,并在RelativeLayout中使用ListView。此外,您可以向ListView添加自定义标题视图以替换您已使用的标头(来源:addHeaderView()

查看您的行,看起来他们有以下字段:&#34;日期&#34;,&#34;重量&#34;和&#34;代表&#34;。这意味着创建一个具有这三个字段的自定义Java对象,并创建ListView适配器元素的对象类型。如果您真的需要它,我可以提供入门代码,但它可以帮助您最好地使用我提供的文档来教您自己如何使用ListView。

教程:ListView tutorial

编辑:另一个奖励:ListView处理允许用户滚动更多,并且更多行添加到您的此列表中。选择ListView的更多理由:)