Android在片段中动态创建textview

时间:2016-05-11 05:44:26

标签: java android dynamic textview fragment

我的Android应用程序出了问题,但这并不是我想要的。

我试图在动态片段中创建TextViews。但不知怎的,我没有让代码工作。

所以让我们从我的片段开放活动开始:

    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_auftrage) {
            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.root_layout, auftrage.newInstance())
                    .addToBackStack(null)
                    .commit();
        } else if (id == R.id.nav_benutzer) {

        } else if (id == R.id.nav_arbeitsplan) {

        } else if (id == R.id.nav_manage) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

转发的请求转到此java文件。正如你将看到的那样,我尝试了一些结果不好的东西......

package com.example.fabian.myapplication.Tabellen;

import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;


import com.example.fabian.myapplication.DataBaseConnection;
import com.example.fabian.myapplication.MainActivity;
import com.example.fabian.myapplication.R;


public class auftrage extends Fragment {

    public static auftrage newInstance() {
        return new auftrage();
    }

    public void auftrage(){
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
super.onCreateView(inflater,container,savedInstanceState);
        final View view = inflater.inflate(R.layout.auftrage, container, false);


        Button btnA = (Button) view.findViewById(R.id.buttonAuf);
        btnA.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                RelativeLayout rl;
                TextView tv1, tv2, tv3;

                rl = (RelativeLayout) view.findViewById(R.id.rl_auftrage);

                tv1 = new TextView (view.getContext());
                tv2 = new TextView (view.getContext());
                tv3 = new TextView (view.getContext());

                tv1.setText("Dynamic TedgfhdfhdghdfghdfghfdghfghddgfhdfhgdxtView");
                tv2.setText("Javhgfdfghdfghfgdhdhgdghdfghdgdfghdfghdfghdfgha");
                tv3.setText("Andrfdghdfghdfghdghdgfhgfdhdfghgdfhdgfhdgfhdgfhoid");

                tv1.setTextColor(Color.RED);
                tv2.setTextColor(Color.MAGENTA);
                tv3.setTextColor(Color.BLUE);

                tv1.setTextSize(40);
                tv2.setTextSize(40);
                tv3.setTextSize(40);

                RelativeLayout.LayoutParams params1=new RelativeLayout.LayoutParams
                        ((int) ViewGroup.LayoutParams.WRAP_CONTENT,(int) ViewGroup.LayoutParams.WRAP_CONTENT);
                params1.leftMargin=200;
                params1.topMargin=200;

                RelativeLayout.LayoutParams params2=new RelativeLayout.LayoutParams
                        ((int) ViewGroup.LayoutParams.WRAP_CONTENT,(int) ViewGroup.LayoutParams.WRAP_CONTENT);
                params2.leftMargin=400;
                params2.topMargin=400;

                RelativeLayout.LayoutParams params3=new RelativeLayout.LayoutParams
                        ((int) ViewGroup.LayoutParams.WRAP_CONTENT,(int) ViewGroup.LayoutParams.WRAP_CONTENT);
                params3.leftMargin=600;
                params3.topMargin=600;

                tv1.setLayoutParams(params1);
                tv2.setLayoutParams(params2);
                tv3.setLayoutParams(params3);

                rl.addView(tv1);
                rl.addView(tv2);
                rl.addView(tv3);

                //String[] IDs = DataBaseConnection.IDAuslesen();
                String[] IDs = {"test 1 ", "nochspwas", "swi"};

                for (String ID: IDs){
                    TextView product = new TextView(getActivity().getApplicationContext());
                    product.setText(ID);
                    //ll.addView(product);

                    //CheckBox cb = (CheckBox) view.findViewById(R.id.checkBoxX);
                    //cb.setText(cb.getText().toString() + ID + "   ");
                    //TODO beim öffnen dann eigenschaften anzeigen
                }


            }
        });

        btnA.setText("klappt");


        return view;

    }

}

最后一个是片段的xml-File:

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/buttonAuf"
        android:layout_gravity="center_vertical"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

我真的希望你能帮助我解决这个问题!!!我认为这只是一点点使代码工作,但不知何故我找不到它:(

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用LinearLayout以动态方式生成它,但如果您真的想要RelativeLayout

在你的片段中:

 RelativeLayout layout = (RelativeLayout)findViewById(R.id.auftrage);
 final TextView textView = new TextView(this);
 textView.setText("Text ");     


 int curTextViewId =  2;//or some id number
 textView.setId(curTextViewId);
 final RelativeLayout.LayoutParams params = 
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
                                            RelativeLayout.LayoutParams.WRAP_CONTENT);

 params.addRule(RelativeLayout.BELOW, prevTextViewId);
 textView.setLayoutParams(params);

 layout.addView(textView, params);