2016-11-17 11 views
-1

私はボタンをクリックして、ボタンに関連付けられたコメント付きのテキストビューを動的に追加しようとしています。私は(私はAをクリックしたとき)、私はボタンAとの間でテキスト/のTextViewを追加したいボタンAとBを持っているし、ここで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" 
     /> 

    <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

であなたのRelativeLayoutにすでにあるのTextViewを追加しようとしている、それを試してみてください。あなたの目的はなんですか?テキストビューの移動または新しいテキストビューの追加? –

+0

それは混乱している、私は同意する。私の目標は、新しいテキストを追加することです。 XMLからTextViewを削除することができます。 TextViewインスタンスが既に存在していた方が簡単だろうと思っていました。 – narb

+0

レイアウトに「表示されません」(可視性)として追加し、コードから表示/非表示にするのはなぜですか?それは簡単です、私はそれを達成するためにプログラムでそれを作成する必要はありません –

答えて

1

にJavaコードを変更します。

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はXMLのRelativeLayoutに既に追加されています。あなたは、あなただけのすなわち

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

名前を「ゴールデンエッグ」に変更できます。それは冷たく聞こえる。 :) –

+0

oguzhandと応答から上記の質問を参照してください – narb

1

1)あなたはのLinearLayoutにRelativeLayoutを変更することができます

2)移動TextViewの間、それを示すために、その可視性を設定する必要がレイアウトにそれを再度追加する必要はありません。ボタンを表示し、表示GONEを設定します。

3)onClick() - > ViewVISIBLEへのsetVisibility。

お手数ですが、

+0

私はリニアに変更する必要はありません。相対的にうまくいく。私はいつも "行ったこと"が何を意味しているのか疑問に思いました。クール。ありがとう! – narb

-1

は、XML
ボタンAとBの間でのTextViewを配置したい場合は、あなたが試すことができ

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

ようになると

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

      } 
     }); 
関連する問題