私は実際のデバイスに表示されているものとエミュレータでアプリケーションを実行するときに表示されるものとの間にいくつかの相違が見られるアンドロイドアプリケーションに取り組んでいます。Android:エミュレータUIとデバイスUIの相違
ここに関連コードがあります。
I形状を定義するXMLファイルを持っている - シンプル青い四角形:ここに示した、私は、その形状を使用する別の "ビュー" のXMLファイルを有する
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:radius="4dp" />
<gradient
android:angle="270"
android:startColor="#449def"
android:endColor="#2f6699" />
<stroke
android:width="1dp"
android:color="#2f6699" />
</shape>
を:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<View
android:background="@drawable/blue_rectangle"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
最後に、私はRelativeLayoutを拡張するカスタムViewGroupを持っています。このカスタムレイアウトには、上で説明したビューの子ビューオブジェクトがあります。カスタムレイアウトは、レイアウトプロセス自体を処理するようにonLayoutメソッドをオーバーライドします。このコードはここにある:あなたが見ることができるように
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4)
{
//Layout the children of this viewgroup
int childCount = this.getChildCount();
for (int i = 0; i < childCount; i++)
{
NodeView view = (NodeView) this.getChildAt(i);
view.layout(40, 40, 40, 40); //Hard code the child object position
}
}
、私は位置(40、40)を持つように子ビューをハードコーディングし、40ディップの幅と高さを持っています。
残念ながら、私は様々な結果を得ています。これは、Androidのエミュレータ(Androidの開発ツールの一部)に次のようになります。
これは、それが私の実際のAndroidデバイス上のように見えるものである(これは私はそれが見えるようにしたいものです同様):
は、青いボックスのサイズの格差の原因は何?何か案は?ありがとう!
エミュレータはどのバージョンを実行していて、Androidのデバイスとバージョンはどのバージョンで動作していますか? – zostay
申し訳ありません、デバイスはAndroid 2.2.1を実行しているLG Optimus Vの携帯電話です。エミュレータはAndroid 2.2を実行しています。 – David