行和列对齐相互影响[Android Studiuo]

时间:2016-03-28 12:06:11

标签: android android-studio

我遇到了TableLayout的问题。我试图将我的对象放在列中但下一行会影响前一行并销毁它们。这是一些代码

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.dom.zadanie2.aktywnosc2"
    android:orientation="vertical">

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView2"
        android:text="Imie"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/editText2"
        android:layout_weight="3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</TableRow>

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/textView3"
        android:text="Płeć"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_weight="1"/>

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:orientation="horizontal">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Kobieta"
            android:id="@+id/radioButton"
            android:layout_column="1"
            android:paddingRight="40dp"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text = "Mężczyzna"
            android:id="@+id/radioButton2"/>

    </RadioGroup>

</TableRow>

<TableRow
    android:id="@+id/tableRow3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <RatingBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ratingBar"/>

</TableRow>

</TableLayout>

当我放置 RatingBar 时,之前的行已移出屏幕。请给我一些提示,我尝试了各种设置但没有任何正常工作。我不知道怎么做这样的行会显得独立。提前致谢。

4 个答案:

答案 0 :(得分:0)

添加

android:layout_weight="3"

到TableLayout,并在每个TableRow中,更改

android:layout_height="wrap_content"

android:layout_height="0dp"
android:weightSum="1"

如下     

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:weightSum="6"
    >

    <TextView
        android:id="@+id/textView2"
        android:text="Imie"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/editText2"
        android:layout_weight="5"
        android:layout_width="0dp"
        android:layout_height="wrap_content" />
</TableRow>

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:weightSum="5"
    >

    <TextView
        android:id="@+id/textView3"
        android:text="Płeć"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_weight="2"
        android:width="0dp"
        />

    <RadioGroup
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:orientation="horizontal">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Kobieta"
            android:id="@+id/radioButton"
            android:layout_column="1"
            android:paddingRight="40dp"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text = "Mężczyzna"

            android:id="@+id/radioButton2"
            />
    </RadioGroup>
</TableRow>
<TableRow
    android:id="@+id/tableRow3"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:weightSum="1"
    >
    <RelativeLayout
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        >

        <RatingBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:id="@+id/ratingBar"
            />
    </RelativeLayout>

</TableRow>

答案 1 :(得分:0)

不要使用TableLayoutTableRow,只需使用LinearLayout

即可
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <!-- your Views -->
        </LinearLayout>

    </HorizontalScrollView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <!-- your Views -->
    </LinearLayout>

    <!-- goes on like this -->
</LinearLayout>

答案 2 :(得分:0)

建议您更改为 Linearlayout

如下面的代码:

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

    <LinearLayout
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.75"
            android:gravity="center"
            android:text="Imie"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/editText2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.25" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tableRow2"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="0.5"
            android:gravity="center"
            android:text="Plec"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="0.5"
            android:gravity="center"
            android:orientation="horizontal">

            <RadioButton
                android:id="@+id/radioButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Kobieta" />

            <RadioButton
                android:id="@+id/radioButton2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Mezczyzna" />
        </RadioGroup>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tableRow3"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <RatingBar
            android:id="@+id/ratingBar"
            style="?android:attr/ratingBarStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center|right"
            android:isIndicator="true"
            android:numStars="5"
            android:stepSize="1" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tableRow5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="7"
        android:orientation="horizontal">

    </LinearLayout>

</LinearLayout>

答案 3 :(得分:0)

默认情况下,TableRow的layout_width是match_parent,而layout_hieght是wrap_content,因此请不要在TableRow标记中指定layout_width和layout_height。

现在,您的问题的主要答案:-在表格布局中,列中每个单元格(视图)的宽度与同一列中的其他单元格(视图)的宽度有关。每个单元格的宽度将等于同一列中单元格的最大宽度。 在您的情况下,等级栏位于第零列,而等级栏的宽度则大于同一列的其他单元格。要解决此问题,请在调整条视图中使用layout_span =“表布局中的总列数”属性。使用此属性,您的评分栏将覆盖所有列。

您的问题的解决方案是:-

<TableRow
    android:id="@+id/tableRow3">
    <RatingBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout_span="2"
        android:id="@+id/ratingBar"/>
</TableRow>