1

SOとグーグルの両方について多くの調査を行った後、私が経験しているのとまったく同じ問題を抱えている人を見たことがないので、ここにあります:

最近、AndroidアプリでUI全体をやり直しました。ほとんどの場合、私は各画面に外観上の変更のみを加えました。それらは、期待どおりにEclipseのUIエディターに完全に表示されます。ただし、これを行った直後に、テストしたすべてのデバイスとエミュレーターの両方で2つの画面が正しくレイアウトされなくなりました。

さて、これら2つの画面の大きな問題は、ルートレベルのLinearLayoutがlayout_heightまたはlayout_widthのいずれかでfill_parentを実際に尊重していないように見えることでした。代わりにwrap_contentに設定されているかのように測定されているようです。画面の約70%しか占めません。これは、ルートのLinearLayout内の個々の要素をラップするのに十分です。画像を投稿しますが、新規ユーザーとしては投稿できません。

レイアウトは画面いっぱいに伸びていません。レイアウトのコードは次のとおりですが、LinearLayoutsにはTextViewとEditTextを含むものがいくつかあります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FF000000"
    android:orientation="vertical" >

<TextView
    style="@style/sans.white.16.bold"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="4dp"
    android:text="@string/edit_account" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

<com.teamunify.ondeck.widget.TUTextView
    style="@style/sans.white.14"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="@string/first_name" />

<com.teamunify.ondeck.widget.TUEditText
    android:id="@+id/acc_editor_first"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:selectAllOnFocus="true"
    android:singleLine="true" />
</LinearLayout>

ルートLinearLayoutは高さと幅の両方を埋める必要があると思います。私はこの同じレイアウトをアプリで何度も問題なく使用しました。(簡単に数えると、アプリで76のLinearLayoutsを使用しており、2つを除いてすべてが機能していることがわかりました。)

最初は、カスタムクラスの測定値が問題を引き起こしているのではないかと思ったので、すべてのプレーンなEditTextを使用するようにレイアウトを変更しましたが、変更はありませんでした。アクティビティを再確認しましたが、このxmlをロードする以外は何もしていません。だから、必死になって、私は次のようにレイアウトをやり直しました:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#FF000000"
        android:orientation="vertical" >

    <TextView
        style="@style/sans.white.16.bold"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center|top"
        android:paddingTop="4dp"
        android:text="@string/edit_account" />

    </LinearLayout>

その後、「アカウントの編集」という単語が表示され、左上隅に黒い背景がマッシュされます。明らかに、LinearLayoutは親を埋めていません。

簡単に言うと、LinearLayoutが期待どおりに画面全体に表示されるようにこれを修正する方法を尋ねています。

私はなぜこれが起こっているのかについて完全に途方に暮れています、そして私は確かにSOの誰かがアイデアを持っていることを望んでいます。これで髪を抜くことができました!

4

2 に答える 2

1

ルート レイアウトの固定幅と高さを設定してみてください。その後、誰が長さと幅を駆動しているかをデバッグできるのはあなただけです。親アクティビティまたはバックグラウンド アクティビティがディメンションを設定している可能性が非常に高いです。根本原因を特定したら、元の設定に戻すことができます。

ここで与えられたコードスニペットから今のところ、ここには何も問題はありません

于 2013-01-11T19:29:28.790 に答える
1

何らかの理由でカスタム アクティビティを他のアクティビティのコンテナとして使用する場合 (この場合、iOS アプリの外観を再作成し、画面のボタン側に沿ってカスタム メニューを表示する必要がありました)、ウィンドウ マネージャーはネストされたアクティビティの実際の高さと幅がどうあるべきかについて少し混乱することがあります。fillparent または matchparent を呼び出すと、代わりにコンテンツがラップされます。

これを機能させるために、コンテナー アクティビティ クラスのいくつかのメソッドの動作を変更することになりました。

于 2013-09-17T18:45:34.717 に答える