我正在尝试单击按钮以动态添加带有与按钮关联的注释的textview。我有一个按钮A和B.我想(当我点击A时)在按钮A和B之间添加一个文本/ TextView。
这是我的xml文件:
Flows
这是我尝试过的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="A"
/>
<Button
android:id="@+id/b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/a"
android:layout_marginTop="5dp"
android:text="B"
/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a test...."
android:visibility="invisible"
/>
</RelativeLayout>
我有以下错误消息:指定的子项已经有父项。您必须首先在孩子的父母身上调用removeView()。
答案 0 :(得分:1)
1)您可以将RelativeLayout更改为LinearLayout
2)在按钮之间移动TextView并设置可见的GONE。
3)onClick() - &gt; setVisibility to View.VISIBLE。
希望能帮到你。答案 1 :(得分:1)
你可以尝试。
TextView textView;
a.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
p.addRule(RelativeLayout.BELOW, a.getId());
textView = new TextView(MainActivity.this);
layout.addView(textView, p);
}
});
比你可以在上面设置任何文字。
答案 2 :(得分:0)
视图txt
已添加到XML中的RelativeLayout。您无需将其重新添加到布局中,只需设置其可见性即可显示它,即
public void onClick(View v) {
txt.setVisibility(View.VISIBLE);
}
答案 3 :(得分:-1)
如果要在按钮A和B之间放置textview
Xml就像
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="A"
/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a test...."
android:visibility="invisible"
/>
<Button
android:id="@+id/b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/a"
android:layout_marginTop="5dp"
android:text="B"
/>
</RelativeLayout>
并将您的Java代码更改为
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button a, b , c;
final TextView txt;
final RelativeLayout layout;
layout = (RelativeLayout) findViewById(R.id.layout);
a = (Button) findViewById(R.id.a);
b = (Button) findViewById(R.id.b);
txt = (TextView) findViewById(R.id.txt);
a.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
txt.setVisibility(View.VISIBLE);
}
});
}
}
答案 4 :(得分:-1)
试试吧
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="A"
/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/a"
android:text="This is a test...."
android:visibility="gone"
/>
<Button
android:id="@+id/b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txt"
android:layout_marginTop="5dp"
android:text="B"
/>
并在您的代码中
TextView textView = (TextView) findViewById(R.id.txt);
a.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
textView.setVisibility(View.VISIBLE);
}
});