ListView与TextView和按钮

时间:2017-09-10 08:52:44

标签: android listview

我的ListView由三个TextViews组成,比如T1,T2和T3。我还有两个按钮,B1和B2

我希望他们像这样出现:

B1 [按钮之间的间距] B2
T1
T2
T3

T1等屏幕下的屏幕上,而不仅仅是B1。

下面是我的xml,我试图根据SO上的问题答案进行更改。

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

        <Button
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="Left Button"
            />
        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="Right Button"
            />
    </LinearLayout>
    <TextView
        android:id="@+id/engText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:textSize="15sp"
        android:typeface="serif"/>

    <TextView
        android:id="@+id/arabText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:textSize="15sp"
        android:typeface="sans"
        />
    <TextView
        android:id="@+id/refText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:textSize="15sp" />

    <ListView
        android:id="@+id/hadithView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
</RelativeLayout>

任何人都可以帮忙。 谢谢

修改 我正在使用CursorAdapter来填充视图。用TextViews重复B1和B2。我想保持B1和B2在顶部(固定)并能够滚动文本视图(没有自己的按钮)

编辑2 我修复了按钮问题。虽然我也需要在顶部固定两个按钮。我删除了它们,现在有两个带有文本视图的按钮,这是我以后需要的。

现在,文本正相互强加。

这是我的新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="match_parent"
android:orientation="vertical" >

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

        <Button
            android:id="@+id/button"
            android:layout_width="0sp"
            android:layout_weight="0.5"
            android:layout_height="wrap_content"
            android:text="Left Button" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0sp"
            android:layout_weight="0.5"
            android:layout_height="wrap_content"
            android:text="Right Button" />
    </LinearLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:id="@+id/engText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10sp"
            android:textSize="15sp"
            android:typeface="serif"/>

        <TextView
            android:id="@+id/arabText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10sp"
            android:textSize="15sp"
            android:typeface="sans"
            />
        <TextView
            android:id="@+id/refText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10sp"
            android:textSize="15sp" />
    </RelativeLayout>
</LinearLayout>

5 个答案:

答案 0 :(得分:1)

这是一个非常快速的修复 - 但它提供了你想要的东西。基本上:您的列表视图正在接管整个屏幕 - 根据您的问题,您似乎不需要它。您可以在顶部使用ListView,将空TextView作为“空间”,但是您必须在TextViews下面给出它们应放置在RelativeLayout(您的主布局)中的位置。我已经快速添加了关于LinearLayout(对于第一个TextView)的属性,然后针对以上所有的上面的TextView。你可以采用不同的方式 - 一般来说,我认为,你应该在android中查找xml文件的文档和/或只是玩一下。这一切都很合乎逻辑,但是当我开始时我也很挣扎。这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:id="@+id/linLay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.4"
            android:text="Left Button"
            />
        <TextView
            android:layout_width="10dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"/>
        <Button
            android:id="@+id/button2"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.4"
            android:text="Right Button"
            />
    </LinearLayout>
    <TextView
        android:id="@+id/engText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:layout_below="@+id/linLay"
        android:layout_marginTop="10dp"
        android:textSize="15sp"
        android:text="My dummy text"
        android:typeface="serif"/>

    <TextView
        android:id="@+id/arabText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:layout_below="@+id/engText"
        android:layout_marginTop="10dp"
        android:textSize="15sp"
        android:text="My dummy text"
        android:typeface="sans"
        />
    <TextView
        android:id="@+id/refText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:layout_below="@+id/arabText"
        android:layout_marginTop="10dp"
        android:textSize="15sp"
        android:text="My dummy text"/>
</RelativeLayout>

答案 1 :(得分:0)

您可以使用RelativeLayout并将不同的RelativeLayout部分相对于彼此保留,并使用其属性layout_below

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    //give some id
    android:id="@+id/one">

    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Left Button"
        />
    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Right Button"
        />
</LinearLayout>
<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
 android:layout_below="@+id/one">
<TextView
    android:id="@+id/engText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="10sp"
    android:textSize="15sp"
    android:typeface="serif"/>

<TextView
    android:id="@+id/arabText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="10sp"
    android:textSize="15sp"
    android:typeface="sans"
    />
<TextView
    android:id="@+id/refText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="10sp"
    android:textSize="15sp" />

<ListView
    android:id="@+id/hadithView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

答案 2 :(得分:0)

看起来你应该使用LinearLayout而不是RelativLayout。 因为您的商品的顺序只是线性垂直排序。 这是代码:

<?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" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="Left Button"
            />
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="Right Button"
            />
    </LinearLayout>
    <TextView
        android:id="@+id/engText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:textSize="15sp"
        android:text="T1"
        android:typeface="serif"/>

    <TextView
        android:id="@+id/arabText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:textSize="15sp"
        android:text="T2"
        android:typeface="sans"
        />
    <TextView
        android:id="@+id/refText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10sp"
        android:text="T3"
        android:textSize="15sp" />

    <ListView
        android:id="@+id/hadithView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
</LinearLayout>

答案 3 :(得分:0)

    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/one"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="1">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Left Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Right Button" />
</LinearLayout>

这样做会将两个按钮设置为彼此相邻,然后您可以将所有下面的元素放在此linearlayout下。

所做的更改:

  • LinearLayout方向更改为水平
  • Linearlayout保持weigthSum为1
  • 两个按钮的layout_width设置为wrap_content(由于重量为0.5,它们仍将保留其位置 - 因此它们都会分割视图。

Button layout

如果你想在按钮之间留出更多的空间,就像这样在左边的按钮上放一个边距。

android:layout_marginRight="32dp"
android:layout_marginEnd="32dp"

答案 4 :(得分:0)

修正了问题。 这是我与F:\Projects\MyCLIProject>ng version _ _ ____ _ ___ / \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _| / △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | | / ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | | /_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___| |___/ @angular/cli: 1.4.1 node: 8.4.0 os: win32 x64 @angular/animations: 4.3.6 @angular/common: 4.3.6 @angular/compiler: 4.3.6 @angular/core: 4.3.6 @angular/forms: 4.3.6 @angular/http: 4.3.6 @angular/platform-browser: 4.3.6 @angular/platform-browser-dynamic: 4.3.6 @angular/router: 4.3.6 @angular/cli: 1.4.1 @angular/compiler-cli: 4.3.6 @angular/language-service: 4.3.6 typescript: 2.3.4 F:\Projects\MyCLIProject>npm --version 5.3.0

一起使用的xml
CursorAdapter

这是我的<?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" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button" android:layout_width="0sp" android:layout_weight="0.5" android:layout_height="wrap_content" android:text="Left Button" /> <Button android:id="@+id/button2" android:layout_width="0sp" android:layout_weight="0.5" android:layout_height="wrap_content" android:text="Right Button" /> </LinearLayout> <TextView android:id="@+id/engText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10sp" android:textSize="15sp" android:typeface="serif"/> <TextView android:id="@+id/arabText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10sp" android:textSize="15sp" android:typeface="sans" /> <TextView android:id="@+id/refText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10sp" android:textSize="15sp" /> </LinearLayout> xml:

Activity

谢谢大家的回复。