我想在我的应用程序中创建一个应用程序详细信息屏幕,对于这个我能想象到的最佳设计模式是android的默认应用程序详细信息屏幕,如截图所示

现在这里的问题是,我不知道如何在这些键值对之间创建"................"部分,虚线部分应该根据两边文本的大小灵活地捕获以增加或缩小
例如:
场景1:
Total..........2MB (10点+文本)
场景2:
Total........200KB (8点+文本)
因此,点会根据文本大小进行调整。
谁能建议我如何实现这一点,也请如果你知道一些更好的方式(模式)来显示应用程序的细节场景中的key-value对,这是最受欢迎的。
发布于 2013-01-22 23:45:04
它非常简单(虚拟布局):
<RelativeLayout>
<TextView parentLeft="true"/>
<TextView parentRight="true"/>
<Textview background="@drawable/one_dot_repeat"
toRightOf="@id/firstTextView"
toLeftOf="@id/secondTextView"
layout_width="match_parent"> <!-- or any other view -->
</RelativeLayout>编辑:也许9patch并不完美,但您可以创建一个xml,在其中只添加一个点的图像,并将repeat=设置为“true”。
第二次编辑:更合适的解决方案可能是添加一个shape作为背景。形状可能是这样的(未经测试):
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<size
android:width="500"
android:height="1" />
<solid
android:color="@color/black" />
<stroke
android:width="1"
android:color="@color/white"
android:dashWidth="1"
android:dashGap="1" />
</shape>我认为您需要对值进行一些调整,但它应该会起作用。
发布于 2013-01-23 00:31:21
java.util.Formatter拯救了我们:
格式化程序可以左对齐要打印的文本,您可以为其分配宽度,因此它将用空格填充文本,使其占据所有所需的宽度,然后您只需将空格替换为点。下面是一个示例:
import java.util.*;
public class Test
{
public static final synchronized strictfp void main(String[] args)
{
Map<String, Double> myData = new LinkedHashMap<String, Double>();
myData.put("Total", 24.0);
myData.put("App", 24.0);
myData.put("USB storage app", 0.0);
myData.put("Data", 0.0);
myData.put("SD card", 0.0);
for(Map.Entry myEntry : myData.entrySet())
{
Formatter myFormatter = new Formatter();
myFormatter.format("%1$-20s%2$15.2fKB", myEntry.getKey(), myEntry.getValue());
System.out.println(myFormatter.toString().replace(' ', '.'));
}
}
}这里有趣的部分是格式字符串:
%1$-20s将第一个参数(1$)左对齐(-),最大宽度为20个字符(20)打印为字符串。
%2$15.2fKB\n将第二个参数(2$)打印为浮点型(f),最大宽度为15个字符(15)和两个小数点(.2)。
这意味着第一个值始终固定为20个字符,第二个值始终固定为15个字符。那么所有行的长度始终是35个字符+ KB后缀+浮点数的小数点。
上面的代码生成以下输出:
Total.........................24.00KB
App...........................24.00KB
USB.storage.app................0.00KB
Data...........................0.00KB
SD.card........................0.00KBTODO:不要覆盖第一列名称中的合法空格;)
发布于 2013-01-22 23:55:28
虽然我不确定,但在我的脑海中,我们也可以做到以下几点,
您可以定义要在屏幕上打印/显示的字符串的总长度。
假设你把它定义为20。现在你有两种情况,让我举个例子来告诉你。
Str1 =总数
Str2 = 200KB
现在可以添加另一个字符串,如
Str3 ="";
for(i=0;i<(20-str1.length()-str2.length))
str3 +=".";
现在你有三个字符串“总数”,"200KB/20KB“和”点/...“,你可以用单个TextV或多个TextViews打印它们。
你也可以尝试计算总长度,而不是20。正如我所说的,我不确定,所以请不要投反对票:P
https://stackoverflow.com/questions/14462306
复制相似问题