gpt4 book ai didi

java - Android在fragment中动态创建textview

转载 作者:行者123 更新时间:2023-12-01 09:56:49 25 4
gpt4 key购买 nike

我的 Android 应用程序出现问题,无法实现我想要的功能。

我正在尝试在 fragment 中动态创建 TextViews。但不知怎的,我无法编写代码来工作。

所以让我们从我的 fragment 打开 Activity 开始:

    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;

}

}

最后一个是 fragment 的 xml 文件:

<?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>

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

提前致谢!

最佳答案

您应该使用LinearLayout动态生成它,但如果您确实想要RelativeLayout

在您的 fragment 中:

 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);

关于java - Android在fragment中动态创建textview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37153964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com