Wie kann ich eine Textansicht unter einer Bildansicht in einem TableLayout zentrieren? Ich sehe, dass ich center_horizontal mit einer angegebenen layout_width in dp verwenden muss:

    android:layout_width="90dp"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"

enter image description here

... aber mein Textwert ist nicht immer der gleiche , ich setze ihn programmgesteuert und wenn er zu lang ist:

enter image description here

Also habe ich android: singleLine auf true gesetzt:

    android:layout_width="90dp"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:singleLine="true"

enter image description here

Also habe ich layout_width auf wrap_content gesetzt, aber auf diese Weise funktioniert center_horizontal nicht :(

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:singleLine="true"

enter image description here

Dies ist mein TableRow-Layout:

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/table_row_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp">

    <RelativeLayout
        android:id="@+id/relative_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="1">

        <!-- Left column -->
        <ImageView
            android:id="@+id/left_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="30dp"
            android:layout_marginStart="30dp"
            android:src="@drawable/item_image" />

        <TextView
            android:id="@+id/left_name"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/left_image"
            android:layout_alignStart="@+id/left_image"
            android:layout_below="@+id/left_image"
            android:gravity="center_horizontal"
            android:text="ITEM TEXT VIEW"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@android:color/black" />


        <!-- Right column -->
        <ImageView
            android:id="@+id/right_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/left_name"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_marginEnd="60dp"
            android:layout_marginRight="60dp"
            android:src="@drawable/item_image"
            android:textColor="@android:color/black" />

        <TextView
            android:id="@+id/right_name"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/right_image"
            android:layout_alignStart="@+id/right_image"
            android:layout_below="@+id/right_image"
            android:gravity="center_horizontal"
            android:text="ITEM TEXT VIEW" />

    </RelativeLayout>

</TableRow>

Kann mir jemand helfen?

UPDATE: Dies ist mein echtes Layoutelement:

enter image description here

0
Hazlo8 2 Jän. 2016 im 23:45

2 Antworten

Beste Antwort

Sie können zwei RelativeLayout anstelle von einem verwenden. Überprüfen Sie diese XML,

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/table_row_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp">

    <RelativeLayout
        android:id="@+id/relative_layout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:weightSum="0.5">

        <!-- Left column -->
        <ImageView
            android:id="@+id/left_image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:src="@drawable/item_image" />

        <TextView
            android:id="@+id/left_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/left_image"
            android:gravity="center_horizontal"
            android:layout_centerHorizontal="true"
            android:text="ITEM TEXT VIEW"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@android:color/black" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/relative_layout2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:weightSum="0.5">
        <!-- Right column -->
        <ImageView
            android:id="@+id/right_image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:src="@drawable/item_image" />

        <TextView
            android:id="@+id/right_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/right_image"
            android:gravity="center_horizontal"
            android:layout_centerHorizontal="true"
            android:text="ITEM TEXT VIEW"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@android:color/black" />

    </RelativeLayout>

</TableRow>
1
Msp 6 Jän. 2016 im 03:33

RelativeLayout ist für dieses Szenario nicht geeignet. Es ist besser, es durch zwei LinearLayout zu ersetzen. Der Vorteil ist, dass Sie die meisten magischen Zahlen wie Ränder und Auffüllungen vermeiden können. Versuchen Sie dieses Layout,

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/table_row_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp">

    <!-- Left column -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/left_image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/circle" />

        <TextView
            android:id="@+id/left_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:text="ITEM TEXT VIEW" />

    </LinearLayout>

    <!-- Right column -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/right_image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/circle"
            android:textColor="@android:color/black" />

        <TextView
            android:id="@+id/right_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:text="ITEM TEXT VIEW" />

    </LinearLayout>

</TableRow>
1
Msp 2 Jän. 2016 im 21:01