0

スピナーで選択したギターコードを表示するアプリを作ろうとしています。

そのため、ギターのネックの大きな画像と、ネックのフレットに配置されたいくつかの小さなドット画像を作成しました。さまざまなコードを表示するために、正しいドットを表示し、他のドットを非表示に設定しました。ここまでは順調ですね。

私の問題は、ImageView解像度の異なる別のデバイスを使用するときに、ドットをラージの正しい位置に維持する方法です。

ここで問題を見ることができます:

これが私のレイアウトファイルです:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >

    <ImageButton
        android:id="@+id/back"
        android:layout_width="150dp"
        android:layout_height="40dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="0dp"
        android:background="@drawable/back"
        android:contentDescription="back"
        android:text="@string/Lagerfeuer" />

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignTop="@id/back"
        android:layout_toRightOf="@id/back"
        android:background="@drawable/back2"
        android:contentDescription="back2" />

    <TextView
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:layout_alignLeft="@id/back"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="12dp"
        android:text="@string/Lagerfeuer"
        android:textColor="#b4b4b4"
        android:textSize="12dp" />

    <Spinner
        android:id="@+id/chordSpinner"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true" />

    <ImageView
        android:id="@+id/griffbrett"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/chordSpinner"
        android:layout_marginBottom="200dp"
        android:adjustViewBounds="true"
        android:src="@drawable/griffbrett" />

    <ImageView
        android:id="@+id/c11"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignTop="@id/griffbrett"
        android:layout_marginLeft="13dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c21"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c11"
        android:layout_below="@id/c11"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c31"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c11"
        android:layout_below="@id/c21"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c41"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c11"
        android:layout_below="@id/c31"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c51"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c11"
        android:layout_below="@id/c41"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c61"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c11"
        android:layout_below="@id/c51"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c12"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignTop="@id/c11"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@id/c11"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c22"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c12"
        android:layout_below="@id/c11"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c32"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c12"
        android:layout_below="@id/c21"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c42"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c12"
        android:layout_below="@id/c31"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c52"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c12"
        android:layout_below="@id/c41"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c62"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c12"
        android:layout_below="@id/c51"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c13"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignTop="@id/c11"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@id/c12"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c23"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c13"
        android:layout_below="@id/c11"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c33"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c13"
        android:layout_below="@id/c21"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c43"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c13"
        android:layout_below="@id/c31"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c53"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c13"
        android:layout_below="@id/c41"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c63"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c13"
        android:layout_below="@id/c51"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c14"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignTop="@id/c11"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@id/c13"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c24"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c14"
        android:layout_below="@id/c11"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c34"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c14"
        android:layout_below="@id/c21"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c44"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c14"
        android:layout_below="@id/c31"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c54"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c14"
        android:layout_below="@id/c41"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c64"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c14"
        android:layout_below="@id/c51"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c15"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignTop="@id/c11"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@id/c14"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c25"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c15"
        android:layout_below="@id/c11"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c35"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c15"
        android:layout_below="@id/c21"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c45"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c15"
        android:layout_below="@id/c31"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c55"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c15"
        android:layout_below="@id/c41"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/c65"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignLeft="@id/c15"
        android:layout_below="@id/c51"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/s1"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@id/c11"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/s2"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/c11"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/s3"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/c21"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/s4"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/c31"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/s5"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/c41"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/s6"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/c51"
        android:layout_marginTop="2dp"
        android:src="@drawable/dot"
        android:visibility="invisible" />

</RelativeLayout>

これはおそらくそのようなレイアウトを行うための最良の解決策ではなかったことを私は知っています、そして私はあなたがこの長いXMLファイルを完全に通過することを期待していません、しかし多分誰かがこれをより簡単に解決する方法を私にアドバイスすることができます。

よろしくお願いします!

4

1 に答える 1

0

これを行うためにxmlレイアウトを使用するのは大変な作業です。私の意見では、カスタムビューを作成し、onMeasure()メソッドとonDrawメソッドを実装します。onMeasure()でビューの高さを設定し、onDraw()メソッドでそれらのドットを描画できます。独自のカスタムビューを実装するための優れたチュートリアルがあります
http://developer.android.com/training/custom-views/index.html

本当にxmlレイアウトでこれを実行したい場合は、次の方法があります。画面の高さと幅を次のように取得できます。

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

画面の幅と高さを使用して正確に計算することにより、レイアウト内の各imageViewのLayoutParamsを適宜設定します。

于 2013-03-12T09:24:49.333 に答える