私はおそらくすべての投稿とドキュメントを読みましたが、まだこの問題を解決できません。
addView()
メソッドを使用して既存の(実行中の)レイアウトにビューを追加したいのですが、何らかの理由でできません。これは簡単で基本的なことですが、それでもできません。だから、助けてください。
ここにコードがあります:
LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
TextView text = new TextView(this);
text.setText("test");
layout.addView(text);
これはコードであり、結果として、XMLファイルで定義されているビューのみが表示されています。追加したこの新しいビューはありません。デバッグすると、この追加されたビューが、追加した親の子として表示されますが、表示されません。
ここにmain.xmlがあります:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"
Android:id="@+id/mainLayout"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
Android:background="@drawable/main1" >
<TextView Android:id="@+id/app_title"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:textColor="#FFF"
Android:text="@string/app_title"
Android:textSize="25dp"
Android:gravity="center_horizontal"/>
<TextView Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:text="@string/main_screen_counter_title"
Android:textSize="15dp"
Android:textColor="#FFF"
Android:gravity="center_horizontal"/>
<TextView Android:id="@+id/frontScreenCounter"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:textColor="#FFF"
Android:text="@string/reading"
Android:textSize="33dp"
Android:gravity="center_horizontal" />
<GridView Android:id="@+id/gridview"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:columnWidth="90dp"
Android:numColumns="3"
Android:verticalSpacing="10dp"
Android:horizontalSpacing="10dp"
Android:stretchMode="columnWidth"
Android:gravity="center"
Android:textColor="#888"
/>
</LinearLayout>
助けてください。これは私を狂わせるでしょう!
新しく追加したビューにLayoutParameters
を指定するのを忘れていました。
LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
TextView text=new TextView(this);
text.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
text.setText("test");
layout.addView(text);
[〜#〜]編集[〜#〜]
IDが@+id/gridview
のGridView
は、レイアウトの高さがfill_parent
で定義されているため、新しいビューを追加するスペースがありません。高さをwrap_content
に変更すると、問題が解決する場合があります。
他の人が簡単に解決策を検証できるように、この投稿にコメントを追加します。
私は同じ問題を抱えていて、理由を見つけるのに何回か無駄にした。
私の欠点は、match_parentを高さとして設定したCustomViewを追加していたことです。
私はこの愚かな迷惑な間違いをした人に貴重な時間を節約したいと思っています:)
TextView tv = new TextView(this);
lytMarks.addView(tv);
CustomView cv = new CustomView(this, someObject);
lytMarks.addView(cv); // <-- This one had height = match_parent!!
EditText et = new EditText(this);
lytMarks.addView(et);
あなたのlinearLayoutコンテンツは親のビューの上にあります。したがって、ScrollViewを使用する必要があります。このような:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<LinearLayout
Android:id="@+id/mainLayout"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/main1"
Android:orientation="vertical">
<TextView
Android:id="@+id/app_title"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:gravity="center_horizontal"
Android:text="@string/app_title"
Android:textColor="#FFF"
Android:textSize="25dp" />
<TextView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:gravity="center_horizontal"
Android:text="@string/main_screen_counter_title"
Android:textColor="#FFF"
Android:textSize="15dp" />
<TextView
Android:id="@+id/frontScreenCounter"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:gravity="center_horizontal"
Android:text="@string/reading"
Android:textColor="#FFF"
Android:textSize="33dp" />
<GridView
Android:id="@+id/gridview"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:columnWidth="90dp"
Android:gravity="center"
Android:horizontalSpacing="10dp"
Android:numColumns="3"
Android:stretchMode="columnWidth"
Android:textColor="#888"
Android:verticalSpacing="10dp" />
</LinearLayout>
</ScrollView>