我有一个带有edittext和按钮的活动,前者具有属性
android:layout_weight="1"
按下按钮时,将以编程方式创建新的文本视图。我希望新的textview出现在edittext下面。 使用我的代码,每个文本视图都在按钮的右侧创建。如何在新线上将其显示在我想要的位置? 我想,由于textview是由代码创建的,唯一的方法是以编程方式。
这是我的activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/new_formulas"
>
<EditText
android:layout_weight="1"
android:textSize="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/add_hint"
android:id="@+id/add_hint"
/>
<Button android:textSize="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:id="@+id/add"
/>
</LinearLayout>
这是我的java代码:
public class New_set extends AppCompatActivity {
private LinearLayout mLayout;
private EditText mEditText;
private Button mButton;
public static int integer = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_set);
mLayout = (LinearLayout) findViewById(R.id.new_formulas);
mEditText = (EditText) findViewById(R.id.add_hint);
mButton = (Button) findViewById(R.id.add);
mButton.setOnClickListener(onClick());
TextView textView = new TextView(this);
textView.setText(mEditText.getText().toString());
}
private OnClickListener onClick() {
return new OnClickListener() {
@Override
public void onClick(View v) {
createNewTextView(mEditText.getText().toString());
}
};
}
private void createNewTextView(String text) {
RelativeLayout layout = new RelativeLayout(this);
final TextView textView = new TextView(this);
textView.setId(integer);
textView.setText(text);
RelativeLayout.LayoutParams params1 =new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
if (integer > 1)
params1.addRule(RelativeLayout.BELOW, integer - 1);
else
params1.addRule(RelativeLayout.BELOW, R.id.add_hint);
layout.setLayoutParams(params1);
mLayout.addView(textView);
integer +=1;
}
}
我尝试使用addRule和RelativeLayout,但它不起作用。
答案 0 :(得分:1)
你可以做那样的事情
private void createNewTextView(String text) {
final TextView textView = new TextView(this);
textView.setId(integer);
textView.setText(text);
textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mLayout.addView(textView,1);
integer +=1;
}
更新
如果你想添加多个textview,我建议你添加一个ListView,然后在listview中添加textviews。
答案 1 :(得分:0)
使用此布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/new_formulas"
>
<Button
android:textSize="30dp"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:id="@+id/add"
/>
<EditText
android:textSize="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/add_hint"
android:id="@+id/add_hint"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/add"
/>
<LinearLayout
android:id="@+id/hints"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_hint"
android:orientation="vertical"/>
</RelativeLayout>
现在,您可以像上面一样添加到TextView
hints
的每个孩子LinearLayout
,无需使用规则。
重要提示:使用LayoutParams
时,请始终使用父布局。例如,它应该是LinearLayout.LayoutParams
。
答案 2 :(得分:0)
试试这个。
RouteConfig