私は、脳のマップを表示しているソフトウェアに取り組んでいます。時間の繰り返しごとに更新されるマップがいくつかあります。これらのマップをズーム可能なテーブル レイアウトで表示したいので、クラスを使用します AwesomeTableLayout.java
(基本的な tableLayout から始めます)。
public class AwesomeTableLayout extends TableLayout{
public AwesomeTableLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public AwesomeTableLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
}
各マップは、 MapView と呼ばれる SurfaceView を使用して表示されます。
public class MapView extends SurfaceView implements SurfaceHolder.Callback {
これらのマップをプログラム的に追加したい場合、ユーザーは別のマップ (入力、メモリ、フォーカスなど) を削除/追加できます。
だから私のMainActivity
中で:
public class MainActivity extends Activity {
//...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources r = getResources();
XmlResourceParser parser = r.getXml(R.layout.activity_main);
AttributeSet as = Xml.asAttributeSet(parser);
Context context = getApplicationContext();
mMapView = new MapView(context, as);
mMapView2 = new MapView(context, as);
AwesomeTableLayout tl = (AwesomeTableLayout) findViewById(R.id.layout);
TableRow tr = new TableRow(this);
tr.addView(new AddMapOrStatsView(context, 0, 0));
tr.addView(mMapView2);
tr.addView(mMapView);
tr.addView(new AddMapOrStatsView(context, 0, 1));
tr.addView(new AddMapOrStatsView(context, 0, 2));
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
}
クラスAddMapOrStatsView
は、テーブルに新しいマップを追加するための一種の「追加」画像です (画像は Android のエイリアンです)。
public class AddMapOrStatsView extends ImageView{
public AddMapOrStatsView(Context context,final int ligne,final int colonne) {
super(context);
/* image utilisée */
setImageResource(R.drawable.ic_launcher);
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Un click simple sur l' AddMapOrStatsView("+ligne+","+colonne+") a été effectué !");
}
});
}
}
activity_main.xml
:_
<?xml version="1.0" encoding="utf-8"?>
<com.main.gui.AwesomeTableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" > <!-- 2 columns -->
<!-- <TableRow -->
<!-- android:id="@+id/tableRow1" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:padding="5dip" > -->
<!-- <TextView -->
<!-- android:id="@+id/textView1" -->
<!-- android:text="Column 1" -->
<!-- android:textAppearance="?android:attr/textAppearanceLarge" /> -->
<!-- <Button -->
<!-- android:id="@+id/button1" -->
<!-- android:text="Column 2" /> -->
<!-- <Button -->
<!-- android:id="@+id/buttonxx" -->
<!-- android:text="Column 3" /> -->
<!-- </TableRow> -->
</com.main.gui.AwesomeTableLayout>
さて、ここで問題。前のコードでアプリケーションを実行すると、次のように表示されます。
ご覧のとおり、AddMapOrStatView の 3 つのビューしか表示されません。
このようにxmlのコメントを外すと:
<?xml version="1.0" encoding="utf-8"?>
<com.main.gui.AwesomeTableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" > <!-- 2 columns -->
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView
android:id="@+id/textView1"
android:text="Column 1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Button
android:id="@+id/button1"
android:text="Column 2" />
<!-- <Button -->
<!-- android:id="@+id/buttonxx" -->
<!-- android:text="Column 3" /> -->
</TableRow>
</com.main.gui.AwesomeTableLayout>
私はこれを見る :
再生をクリックすると (つまり、2 つの surfaceView を描画します)、次のように表示されます。
最後に、次のように xml のコメントを外します。
<?xml version="1.0" encoding="utf-8"?>
<com.main.gui.AwesomeTableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" > <!-- 2 columns -->
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView
android:id="@+id/textView1"
android:text="Column 1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Button
android:id="@+id/button1"
android:text="Column 2" />
<Button
android:id="@+id/buttonxx"
android:text="Column 3" />
</TableRow>
</com.main.gui.AwesomeTableLayout>
私はこれを見る :
次に、2 つのサーフェス ビューを描画すると、次のように表示されます。
問題は、アンドロイドの 3 枚の写真と 2 つの地図を見たいだけです。tableLayout の行に他のものを追加して、表面ビューを表示する必要があるのはなぜですか?
読んでくれてありがとう。