You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TableRow内TextView文本过长时下移问题求助

Hey there! Let's fix that annoying TextView offset issue in your TableLayout schedule app— I’ve dealt with this exact problem when building similar classroom tools, so I know how frustrating it is when long course titles throw off your neat layout.

What’s causing the offset?

Most of the time, this happens because of two default Android layout behaviors:

  1. TableRows automatically align the baseline of all TextViews, which gets messed up when text wraps to multiple lines.
  2. TextViews with wrap_content height don’t fill the full row height, so wrapped text ends up sitting lower instead of centering vertically.

Fixes you can implement right away

Let’s walk through the key changes to your XML:

1. Disable baseline alignment in TableRows

Add android:baselineAligned="false" to each TableRow. This turns off the default baseline alignment that’s causing the shift when text wraps—this is often the root cause!

<TableRow
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="false"> <!-- Critical fix for baseline shift -->

2. Make TextViews fill the row height and center content

Update your TextView attributes to ensure text stays centered vertically, even when it wraps across lines:

<TextView
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1" <!-- Distributes space evenly across columns -->
    android:gravity="center_vertical|start" <!-- Centers text vertically, left-aligns horizontally -->
    android:padding="8dp" <!-- Adds breathing room so text doesn’t touch edges -->
    android:text="很长的课程名称很长的课程名称很长的课程名称"/>

3. Configure TableLayout to handle column resizing

Add android:stretchColumns="*" to your TableLayout to make all columns stretch to fit their content, preventing cramped text and uneven column widths:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="*">

Full modified XML example

Here’s how your layout should look with all these fixes applied:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="*">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false">

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_vertical|start"
            android:padding="8dp"
            android:text="短课程"/>

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_vertical|start"
            android:padding="8dp"
            android:text="很长的课程名称很长的课程名称很长的课程名称"/>
    </TableRow>
</TableLayout>

Quick check if issues remain

If you still see minor offsets, double-check that no other views in the row have fixed heights that are forcing the TextView down. Also, avoid using android:singleLine="true" on TextViews that need to wrap— that can cause unexpected layout shifts too.

This should get your course table looking clean and consistent, no matter how long the course names are!

内容的提问来源于stack exchange,提问作者ganderolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:32:22