我遇到了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 时,之前的行已移出屏幕。请给我一些提示,我尝试了各种设置但没有任何正常工作。我不知道怎么做这样的行会显得独立。提前致谢。
答案 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)
不要使用TableLayout
和TableRow
,只需使用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>