1

アプリケーションを構築するために、いくつかのリストがあります。この問題は、カスタムであるにもかかわらず非常に単純なリスト項目に存在します。形式は次のとおりです。

ここに画像の説明を入力

これは、2 つのテキスト ビューと 1 つの画像ビューを持つ 1 つのリスト アイテムを表します。

タイトルと日付は実際には互いの真下にあり、画像は右側にあり、属性として中央が垂直になっていることに注意してください。画像は 2 つのテキスト ビューの間にあるべきではありません

最初に XML を提供し、次に正確な問題を説明します。

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView 
            android:textSize="16dip" 
            android:id="@+id/title"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"/>

        <TextView 
            android:textSize="12dip" 
            android:id="@+id/date"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"/>
    </LinearLayout>
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginRight="5dip" >

        <ImageView
            android:id="@+id/validationStateImg"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true" />
    </RelativeLayout>
</LinearLayout>

問題: ある意味では、このレイアウトではすべてが ASCII 表現とまったく同じように表示されます。正しく機能しないのは、テキストが長くなったときです。テキストが長いが 2 行に収まらない場合、画像ビューが小さくなります。

それ以外の場合は、imageview を画面から完全に押し出すだけです。

私が必要とするのは、日付または他のテキストビューの長さが長すぎる場合、改行することです。もちろん、あらゆる種類の画面サイズに対応できるソリューションである必要があります。

私は UI アーティストではないので、レイアウトを使用すべきではないという意味で乱用している場合は、申し訳ありません。

ヘルプの他に、ヒントやヒントも大歓迎です!

4

4 に答える 4

6

私はあなたの最善の策は1つの単純なRelativeLayoutだと思います:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    >
    <ImageView
        android:id="@+id/validationStateImg"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical"
        />
    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/validationStateImg"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:textSize="16dp"
        />
    <TextView
        android:id="@+id/date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/validationStateImg"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/title"
        />
</RelativeLayout>

ImageViewを親の右側にスナップし、TextViewが残りの幅を取得するようにしますが、ImageViewの左側に配置します。

于 2013-01-26T06:41:34.077 に答える
2

お役に立てれば:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<LinearLayout
    android:layout_weight = "1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dasdfasdfasdfasdfsadfsdf dsfasdfasd asdfadsf dfasdfads asdfasdf"
        android:textSize="16dip" />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dasdfasdfasdfasdfsadfsdf"
        android:textSize="12dip" />
</LinearLayout>

<RelativeLayout
    android:layout_width="100dp"
    android:layout_height="match_parent"
    android:gravity="center"
    android:layout_marginRight="5dip" >

    <ImageView
        android:id="@+id/validationStateImg"
        android:src="@drawable/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true" />
</RelativeLayout>

于 2013-01-26T06:18:11.473 に答える
0

画像を縮小したくない場合は、親が提供する不動産の特定の比率を画像に与える必要があります。

具体的には、その親である LinearLayout には weight_sum が必要であり、テキストと画像の両方に layout_weight が必要です。

重量は合計になるはずです。重みは整数である必要はなく、layout_width を 0 にする必要があることは非常に重要です (そして非常に直感に反します) (2 つが並んで座っていると仮定して)...だから...

以下に追加する必要がある余分なものをすべて削除し、重要な部分だけを残します....

<LinearLayout weight_sum=2 layout_height=fill_parent>
   <TextView layout_weight=2 layout_height=0dp/>
   <ImageView layout_weight=2 layout_height=0dp />
   <TextView layout_weight=2 layout_height=0dp/>
</LinearLayout>

これにより、LinearLayout が半分に分割され、左側がテキスト (可能な場合は折り返されます) になり、右側が画像になります。これを調整するには、合計を 3 に設定し、側面を 2 と 1 に分割します。この場合、テキストは画面の 2/3 になり、画像は 1/3 になります。または、合計を 2 のままにして、左を 1.3、右を 0.7 にすると、同様の効果が得られます。

于 2013-01-26T06:14:44.280 に答える