5

次は機能しますが、プログラムで画像を変更できるように xml を削除したいと思います: Java:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.p6_touch);
    ImageView floatImage = (ImageView) findViewById(R.id.p6_imageView);
    floatImage.setOnTouchListener(this);    
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background_black" >
    <ImageView
        android:id="@+id/p6_imageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="matrix"
        android:src="@drawable/p6_trail_map" >
    </ImageView>
    <ImageView
          android:id="@+id/imageView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="bottom"
          android:onClick="showFlashlight"
          android:src="@drawable/legend_block24" />
</FrameLayout>
4

1 に答える 1

8

ドキュメントには、XML を Java にマップする表があります。

  • 例:android:srcは と同等setImageResource()です。

スーパー クラスからの属性については、継承されたテーブルを確認する必要があります。

  • 例:android:idは と同等setId()です。

widthheight、およびgravityはすべて LayoutParams オブジェクトに設定され、 に渡されsetLayoutParams()ます。

すべての XML 属性に一致する Java メソッドがあるわけではなく (逆もまた同様)、使用しているすべての属性に一致するものがあることを理解してください。


例として、このファイルを次のように呼びましょうactivity_main.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background_black" >
    <!-- We'll add this missing ImageView back in with Java -->
    <ImageView
          android:id="@+id/imageView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="bottom"
          android:onClick="showFlashlight"
          android:src="@drawable/legend_block24" />
</FrameLayout>

今私たちの活動で:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Let's create the missing ImageView
    ImageView image = new ImageView(this);

    // Now the layout parameters, these are a little tricky at first
    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.MATCH_PARENT);

    image.setScaleType(ImageView.ScaleType.MATRIX);
    image.setImageResource(R.drawable.p6_trail_map);
    image.setOnTouchListener(this);    

    // Let's get the root layout and add our ImageView
    FrameLayout layout = (FrameLayout) findViewById(R.id.root);
    layout.addView(image, 0, params);
}
于 2012-12-15T01:20:43.727 に答える