9

レイアウトがあり、ビューの 1 つを中央に配置する必要があります。それは簡単です。問題は、画面の上部に配置する必要がある他のビューもいくつかあることです。

問題:十分なスペースがあれば問題ないように見えますが、画面が小さすぎると上部と中央の要素が重なります。

質問:画面が小さすぎる場合、「中央揃え」の要素を押し下げるにはどうすればよいですか?

元のレイアウトは非常に複雑です。例を用意しました。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/theOneAtTheTop"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Some long text which may overlap the lower view. Some long text which may overlap the lower view."
    android:layout_alignParentTop="true"
    />


<TextView
    android:id="@+id/theOneInTheMiddlep"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Some long text which may overlap the upper view. Some long text which may overlap the upper view. "
    android:layout_centerInParent="true"
    />


</RelativeLayout>

ここで少しシミュレーションします。中央の写真は小さな画面でどのように見えるかを示し、側面の写真は望ましい状況を示しています。

4

3 に答える 3

1

さて、私はこの答えを完全に変えています。目的の配置が垂直の場合は、コードをRelativeLayout内に配置できます。これは、_fill_parent_であり、 OneAtTheTopのにあります。その中に、垂直方向に中央揃えにしたいビューを配置できます。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/theOneAtTheTop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Some long text which may overlap the lower view. Some long text which may overlap the lower view." />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/theOneAtTheTop" >

        <TextView
            android:id="@+id/theOneInTheMiddlep"
            android:layout_width="200sp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="Some long text which may overlap the upper view. long text which may overlap the upper view. Some long text which may overlap the upper view.  " />
    </RelativeLayout>

</RelativeLayout>

それが役に立てば幸い

于 2012-09-10T14:59:14.053 に答える
1

xmlレイアウトはそのような条件付きロジックの場所ではないため、レイアウトファイルでこれを直接実行できるとは思えません。レイアウト ファイルを使用できる (私が思うに) 唯一の実際の状況は、関連するビューの正確なサイズとアプリの API レベルがわかっている場合であり、3.2さまざまな状況に合わせて多くのレイアウトを作成します (これは本当に疑問です)。 )。

ビューの 1 つを中央にRelativeLayout配置すると、何があっても中央に配置されます。xml レイアウト ファイル レベルでビューが重なるという概念はありません。コードでは別のことです。

于 2012-09-10T15:59:10.253 に答える
0

android:layout_below="@+id/theOneAtTheTop" 2番目のTextViewに 追加するだけで、準備は完了です。

<TextView
    android:id="@+id/theOneAtTheTop"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view."
    android:layout_alignParentTop="true"
    />


<TextView
    android:id="@+id/theOneInTheMiddlep"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/theOneAtTheTop"
    android:text="Some long text which may overlap the upper view. Some long text which may overlap the upper view. "
    android:layout_centerInParent="true"
    />


</RelativeLayout>
于 2012-09-10T15:05:53.093 に答える