我的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>
我真的希望你能帮助我解决这个问题!!!我认为这只是一点点使代码工作,但不知何故我找不到它:(
提前谢谢!
答案 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);