2

我正在使用 LinearLayout,因为它是我可以使用 layout_weight 的唯一方法,而且我对在 RelativeLayout 中均匀对齐 textview 还不够熟悉。(我是安卓新手)。我正在制作一个日历应用程序,但似乎无法弄清楚如何在我的 7 个文本视图下方获得一个文本视图。(这 7 个文本视图是一周中的几天)。他们最终显示在同一行。

如何获得低于我 7 天的最终文本视图?请注意,我已经在 stackoverflow 上搜索了这个问题,但我没有找到任何对我有意义或有效的东西。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="top" >

<TextView
    android:id="@+id/day1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:text="@string/day1"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/day2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1"
    android:text="@string/day2"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/day3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1"
    android:text="@string/day3"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/day4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1"
    android:text="@string/day4"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/day5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1"
    android:text="@string/day5"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/day6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1"
    android:text="@string/day6"
    android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
    android:id="@+id/day7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1"
    android:text="@string/day7"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="a text string below" 
    android:textAppearance="?android:attr/textAppearanceSmall" />


</LinearLayout>
4

6 回答 6

8

简化:

<LinearLayout android:orientation="vertical">    
    <LinearLayout android:orientation="horizontal" android:layout_weight="1">
        <!-- TextView 1,2,3,4,5,6,7 here -->
    </LinearLayout>
    <TextView android:layout_weight="1"/><!-- (TextView 8) -->
</LinearLayout>
于 2012-09-01T23:19:37.960 回答
3

如果您使用 RelativeLayout,您将能够使用 *android:layout_below* 属性。

您使用的所有文本视图都具有相同的权重。据我所知,您可以删除这些行。

如果我是你,我会考虑如下层次结构:

<RelativeLayout>
    <LinearLayout android:id="@+id/blabla">
        *7 textviews*
    </LinearLayout>
    <TextView>
        android:layout_below= @+id/blabla
    </TextView>
</RelativeLayout>
于 2012-09-01T23:19:09.260 回答
1

要在其余视图下方放置一个带有摘要的视图,您可以将主线性布局的方向更改为垂直,并将您的 7 个文本视图与另一个水平方向的线性布局包围起来。这是一个代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="top" >

<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
android:id="@+id/day1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@string/day1"
android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
android:id="@+id/day2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="@string/day2"
android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
android:id="@+id/day3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="@string/day3"
android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
android:id="@+id/day4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="@string/day4"
android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
android:id="@+id/day5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="@string/day5"
android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
android:id="@+id/day6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="@string/day6"
android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
android:id="@+id/day7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:text="@string/day7"
android:textAppearance="?android:attr/textAppearanceSmall" />

</LinearLayout>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="a text string below" 
android:textAppearance="?android:attr/textAppearanceSmall" />


</LinearLayout>
于 2012-09-01T23:26:57.553 回答
0

不知道我是否理解正确,但是您可以尝试将第 1-7 天封装在一个额外的线性布局中,并将最后一个 TextView 封装在 RootLayout 中。

例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="top" >


<LinearLayout 
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="top" >

  <!-- TextView for Days 1 to 7 in here -->

</LinearLayout>

<!-- Last TextView in here -->

</LinearLayout>

编辑:并尝试将 android:orientation 标签设置为“垂直”

于 2012-09-01T23:17:36.640 回答
0

一个更简单的解释:您正在使用方向设置为水平的 LinearLayout;这告诉Android“所有这些项目都应该在一行中彼此相邻放置”。您想要的是一个垂直线性布局,其中包含您当前拥有的线性布局。然后,您的最终 textView 可以是垂直布局的子级,而不是水平布局的子级(这是其他答案所显示的)。

于 2012-09-01T23:22:13.420 回答
0

据我了解,您想要做的是:

  • 文本视图1
  • 文本视图2
  • (更多的TextViews)
  • 文本视图最后

为了在垂直方向上实现这一点,我在我的 .xml 布局文件中做到了这一点。希望它也适合你。

注意:您不需要嵌套线性布局。这可以通过一个线性布局来实现。

<?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="wrap_content"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/fullNameTextView"
        android:text="@string/fullNameString"
        android:textSize="@dimen/mainActivityFontSize"
        android:layout_marginLeft="@dimen/mainActivityMarginLeft"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/programNameTextView"
        android:textSize="@dimen/mainActivityFontSize"
        android:layout_marginLeft="@dimen/mainActivityMarginLeft"
        android:text="@string/programName"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/semesterTextView"
        android:textSize="@dimen/mainActivityFontSize"
        android:layout_marginLeft="@dimen/mainActivityMarginLeft"
        android:text="@string/semesterTextView"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/courseNameTextView"
        android:textSize="@dimen/mainActivityFontSize"
        android:layout_marginLeft="@dimen/mainActivityMarginLeft"
        android:text="@string/courseName"/>

</LinearLayout>

三件事使我的布局成为我想要的方式(希望你也想要相同类型的布局):

  1. android:layout_width="match_parent"
  2. android:layout_height="wrap_content"
  3. android:orientation="vertical"

结果是这样的:

于 2017-09-13T21:49:56.187 回答