我正在Android中使用RelativeLayout
设计一个表,并以编程方式添加条目。结果令我高兴:
布局代码是
<RelativeLayout
android:id="@+id/table_relativelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/column1_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/column1_header"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_weight="1.0"
/>
<TextView
android:id="@+id/column2_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignBaseline="@id/column1_header"
android:text="@string/column1_header"
android:textSize="14sp"
android:textStyle="bold"
android:textAllCaps="true"
android:textColor="@color/textColor"
/>
<TextView
android:id="@+id/column3_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignBaseline="@id/column1_header"
android:text="@string/column3_header"
android:textSize="14sp"
android:textAllCaps="true"
android:textStyle="bold"
android:paddingRight="8dip"
/>
<TextView
android:id="@+id/example_column1_entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/column1_header"
android:text=""
android:paddingLeft="8dip"
android:visibility="gone"
/>
<TextView
android:id="@+id/example_column2_entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/column2_header"
android:text=""
android:visibility="gone"
/>
<TextView
android:id="@+id/example_column3_entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/column3_header"
android:paddingRight="8dip"
android:text=""
android:visibility="gone"
/>
</RelativeLayout>
但是,随着更多条目的添加,滚动变得必要。所以我将整个事情包裹在ScrollView
(按this answer)
<ScrollView
android:id="@+id/table_scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:fillViewport="true"
>
...
</ScrollView>
这当然会导致如果我向下滚动隐藏标题行。我更倾向于在ScrollView
之外使用它,但后来我不知道如何将条目与标题对齐。有什么想法吗?
答案 0 :(得分:0)
尝试这样的事情:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentTop="true">
<TextView
android:id="@+id/column1_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/column1_header"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_weight="1.0"
/>
<TextView
android:id="@+id/column2_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignBaseline="@id/column1_header"
android:text="@string/column1_header"
android:textSize="14sp"
android:textStyle="bold"
android:textAllCaps="true"
android:textColor="@color/textColor"
/>
<TextView
android:id="@+id/column3_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignBaseline="@id/column1_header"
android:text="@string/column3_header"
android:textSize="14sp"
android:textAllCaps="true"
android:textStyle="bold"
android:paddingRight="8dip"
/>
</LinearLayout>
<ScrollView
android:layout_below="@id/header"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/scroll_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<rows>
</LinearLayout>
</ScrollView>
<RelativeLayout>
答案 1 :(得分:0)
你不想用xml做这件事。 因为你根本无法在relativeLayout中引用视图 从外面反之亦然,调整事物。 我必须处理你的问题,因为我实现了一个in size selfadjusting tableView。诀窍是将一行的所有textViews添加到ViewGroup(LinearLayout,例如,因为易于使用addView)并计算正手中每个行标题的宽度。比设置viewGroups programmaticaly的大小。 这是关键。这样,您可以稍后轻松更改行标题并保持灵活性。此外,您不限于固定大小的列。
这应该有希望帮助你。如果您发现自己处于stackoverflow,请回答所有即将出现的计算大小等问题。
Greets,Steve。
答案 2 :(得分:0)
好的,我找到了一个解决方案:我在ScrollView之外有三个标题TextViews,正如几个评论者所建议的那样,以及另外三个#34;标题&#34;在ScrollViews中具有相同参数和android:visibility="invisible"
的TextView。那些不可见的TextView将用于对齐可见条目。
感谢您的回答!