android: How to force TableRows to have the same height?

本秂侑毒 提交于 2019-12-06 16:16:52

问题


I have searched google and stackoverflow thoroughly, but the only answer I get is: set each Tablerow with layout weight = "1". This doesnt work.

Now I have eight rows in a TableLayout, and each contains 5 LinearLayouts. Each of the LinearLayouts contains 2 TextViews, and the FontSizes vary from TextView to TextView.

It turns out that the TableRows vary in height, depending on the Fontsizes of the contained TextViews. Strangely enough, it doesnt have any impact on the layout whether I set the layout_height of the TableRows to "0dp" or to "match_parent" or "fill_parent".

How can I force the TableRows to have the same height? I dont want to use a specific pts value as height, because the tableRows must divide the whole screen equally between themselves.

Here is part of the xml, the actual file is huge:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="6"
    android:weightSum="8"
    tools:context=".MainActivity" >

    <TableRow
        android:layout_width="match_parent"
        android:layout_weight="1"
        tools:context=".MainActivity">

        <LinearLayout
            android:clickable="true"
            android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginTop="@dimen/btnmargintop"
            android:layout_marginBottom="@dimen/btnmarginbot"
            android:layout_marginLeft="@dimen/btnmarginleft"
            android:layout_marginRight="@dimen/btnmarginright"
            android:layout_weight="1"
            android:background="@drawable/bg" >

            <myapp.TypefacedTextView
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="@integer/layoutweight1"
                android:layout_gravity="center"
                stevens:typeface="myfont.otf"
                android:clickable="false"
                android:textSize="@dimen/fontsize1" />
            <myapp.TypefacedTextView
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="@integer/layoutweight2"
                android:layout_gravity="center"
                stevens:typeface="myfont.otf"
                android:clickable="false"
                android:textSize="@dimen/fontsize2" />              
        </LinearLayout>

回答1:


You are probably letting the layout of your tab to automatically adjust to the size of the content inside. There are two ways, to settle things down:

  • Make sure all the elements share the same size - that being said, don't worry about the table as a whole, just make sure, that the dimensions of the elements inside are the same
  • Or simply set the height of the parent layout and don't let the elements make a difference. Problem with this solution is, that if you get bigger inside, you'll be out of space, so you may want to stick with the first option


来源:https://stackoverflow.com/questions/15137674/android-how-to-force-tablerows-to-have-the-same-height

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!