2016-11-17 95 views
-1

我正在尝试使用按钮单击以动态添加与该按钮关联的注释的textview。我有一个按钮A和B.我想要的(当我点击A)在按钮A和B.如何在按钮之间添加TextView

这里之间添加一个文本/ 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" 
     /> 

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

这里是我试过的代码:

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) { 
       RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
       p.addRule(RelativeLayout.BELOW, a.getId()); 
       layout.addView(txt, p); 
       setContentView(layout); 
      } 
     }); 

    } 

} 

我有以下错误消息:指定的子项已经有父项。您必须先调用子对象的父对象的removeView()。

+0

您尝试添加的TextView这已经是你的RelativeLayout。你的目的是什么?移动textview或添加新的textview? –

+0

这很令人困惑,我同意。我的目标是添加一个新文本。你可以从XML中移除TextView。如果TextView实例已经存在,我认为它会更简单。 – narb

+0

为什么不把它作为'去'(可见性)添加到布局中并且将其显示/隐藏到代码中?这很容易,你不需要以编程方式创建它,以实现我将要做的那个 –

回答

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

      } 
     }); 

比你可以设置任何文字。

+0

它的工作原理。我可能会更容易地去“消失”的解决方案:)谢谢! – narb

0

该视图txt已被添加到您的RelativeLayout在XML中。你不需要把它重新添加到布局,你只需要设置其知名度表现出来,即

public void onClick(View v) { 
     txt.setVisibility(View.VISIBLE); 
    } 
+0

你可以改变你的名字为'Golden Egg'。听起来很酷。 :) –

+0

从oguzhand看到的问题和回应 – narb

1

1)你可以改变的RelativeLayout到的LinearLayout

2)移动的TextView之间按钮并设置可见GONE。

3)onClick() - > setVisibility to View.VISIBLE。

希望能帮到你。

+0

我甚至不必改变线性。相对运作良好。我总是想知道“走了”是什么意思。凉。谢谢! – narb

-1

如果你想放置在TextView的按钮A和B之间
的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); 
      } 
    }); 

    } 

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

      } 
     }); 
相关问题