gpt4 book ai didi

android-listview - 在底部显示总数的 ListView

转载 作者:行者123 更新时间:2023-11-29 15:14:19 29 4
gpt4 key购买 nike

我有一个 ListView,我在其中显示了一些详细信息,包括价格。我需要在 ListView 的底部显示总和。到目前为止,我已经尝试使用 ListView 来显示详细信息,并尝试使用单行表格布局来显示总数,问题是我无法让它们对齐。

你知道我能得到这样的结果吗:

enter image description here

我知道“Cache”的数量不是Total,但想法是一样的。所有这些行显示它们的数量正确对齐,标签和数量之间的空间用点填充,这是我想要实现的结果,所以如果你能提供帮助,我将不胜感激。

这是我当前用于 Activity 的布局

<?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="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical" >

<ListView
android:id="@+id/detailsListView"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:dividerHeight="1dp" >
</ListView>
</LinearLayout>

<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:stretchColumns="0,1" >
<TableRow android:padding="1dp" >

<TextView
style="@style/Control.Label.Large.Stretched"
android:layout_weight="1"
android:text="@string/total" />

<TextView
android:id="@+id/totalSumTextView"
style="@style/Control.TextView.Large.Stretched"
android:layout_weight="1"/>
</TableRow>

<TableRow android:id="@+id/tableRow3" />
</TableLayout>
</LinearLayout>

这是 ListView 中每个项目的布局:

<?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" >

<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:stretchColumns="0,1" >

<TableRow android:padding="1dp" >

<TextView
style="@style/Control.Label.Small.Stretched"
android:layout_weight="1"
android:text="@string/item_quantity" />

<TextView
android:id="@+id/itemQuantityTextView"
style="@style/Control.TextView.Small.Stretched"
android:layout_weight="1" />
</TableRow>

<TableRow android:padding="1dp" >

<TextView
style="@style/Control.Label.Small.Stretched"
android:layout_weight="1"
android:text="@string/item_unit_price" />

<TextView
android:id="@+id/itemUnitPriceTextView"
style="@style/Control.TextView.Small.Stretched"
android:layout_weight="1" />
</TableRow>

<TableRow android:padding="1dp" >

<TextView
style="@style/Control.Label.Small.Stretched"
android:layout_weight="1"
android:text="@string/item_total" />

<TextView
android:id="@+id/itemTotalTextView"
style="@style/Control.TextView.Small.Stretched"
android:layout_weight="1" />
</TableRow>
</TableLayout>

</LinearLayout>

每个项目应该看起来像这样:

enter image description here

它是应该显示在 ListView 下方的那些总数的总和

这张图片来 self 正在尝试做的事情。它是用西类牙语写的,但它应该能让你更好地理解我在说什么。如您所见,ListView 下面的行与上面的值不对齐。

enter image description here

最佳答案

我在你的截图中看到了这些问题:

  1. 列本身的对齐方式不同
  2. 列中的文本居中对齐,而不是右对齐
  3. 您可能希望在数字输出中使用固定数量的小数点
  4. 一行点

1) 列对齐

我认为这与使用 TableLayout 有关。正如您在我之前的示例中看到的,我更喜欢使用 RelativeLayout。当您掌握它时,您会发现它非常强大。

我将使用下面的示例作为单行的起点,并使用 layout_below 标记在该行下方再创建 2 个相似的行,将它们放置在上一行的下方。

像这个(长)例子:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:padding="16dp" >

<!-- ROW 1 -->

<TextView
android:id="@+id/tvLabel1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Cantidad Pedida" />

<TextView
android:id="@+id/tvSizeMb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tvLabel1"
android:layout_alignParentRight="true"
android:text="12.0" />

<!-- ROW 2 -->

<TextView
android:id="@+id/tvLabel2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvLabel1"
android:text="Unidad Medida" />

<TextView
android:id="@+id/tvSizeMb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tvLabel2"
android:layout_alignParentRight="true"
android:text="CJA" />

<!-- ROW 3 -->

<TextView
android:id="@+id/tvLabel3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvLabel2"
android:text="Precio Unitario" />

<TextView
android:id="@+id/tvSizeMb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tvLabel3"
android:layout_alignParentRight="true"
android:text="157.6036" />

</RelativeLayout>

2) 右对齐列中的文本

由于使用了 layout_weight="1" 标签,您的 TextView 项目在列中居中。如果您改为使用 RelativeLayout 如上所述, TextView 本身将设置在右侧。

3) 十进制数字的固定格式

要正确对齐数字,使用固定数量的小数点会有所帮助。在您的情况下,您可能需要 4 位小数。

当您设置值时,您可能正在做类似的事情:

myTextView.setText(String.valueOf(myNumber);

取而代之的是,使用 String.format() 方法来设置小数位数:

myTextView.setText(String.format("%.4f", myNumber);

有关这方面的更多信息,请查看这篇文章:

4) 文本字段之间的点行

我希望能够使用 stroke 样式的 XML Drawable 进行一些处理,但遇到了一些奇怪的问题。您可能想尝试一下这个概念。

然而,我过去多次所做的与 ArianJM 推荐的类似。

<View
android:layout_width="0dp"
android:layout_height="1px"
android:layout_alignBaseline="@+id/tvLabel1"
android:layout_toLeftOf="@+id/tvSizeMb1"
android:layout_toRightOf="@+id/tvLabel1"
android:background="#333"
tools:ignore="PxUsage" />

注意高度属性使用 px 而不是 dp。这会创建更清晰的图像,并且通过使用 1px 值,线条不是很强烈。您可以通过为线条使用稍微透明的颜色来改善这一点。


上一个答案

您可以使用基本的 ListView 来显示您的项目。 ListView 可以为每个项目使用自定义 XML 布局,以您希望的方式对齐文本。

例如,这里有一个 RelativeLayout 以您希望的方式对齐 2 个文本字段:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:padding="16dp" >

<TextView
android:id="@+id/tvLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="Total" />

<TextView
android:id="@+id/tvSizeMb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="4.57MB" />

</RelativeLayout>

然后在您的 ListView 下方,您可能想要显示“缓存”行。为此使用相同的布局,项目将正确对齐。

关于android-listview - 在底部显示总数的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242337/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com