应用程序详细信息屏幕android

应用程序详细信息屏幕android,android,android-layout,Android,Android Layout,我想在我的应用程序中创建一个应用程序详细信息屏幕,因为我能想象的最好的设计模式是android的默认应用程序详细信息屏幕,如屏幕截图所示 现在这里的问题是,我不知道如何在这些键值对之间创建“……”部分,虚线部分应该可以灵活地捕获,以根据两侧文本的大小增加或缩小 e、 g 情景1: 总计……..2MB(10点+文本) 情景2: 总计…….200KB(8点+文本) 所以点会根据文本大小进行调整 有谁能建议我如何实现这一点吗?如果您知道一些更好的方式(模式)来显示应用程序详细信息场景中的键值对,这是非

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

现在这里的问题是,我不知道如何在这些键值对之间创建
“……”
部分,虚线部分应该可以灵活地捕获,以根据两侧文本的大小增加或缩小

e、 g

情景1:

总计……..2MB
(10点+文本)

情景2:

总计…….200KB
(8点+文本)

所以点会根据文本大小进行调整

有谁能建议我如何实现这一点吗?如果您知道一些更好的方式(模式)来显示应用程序详细信息场景中的
键值对,这是非常受欢迎的。

它非常简单(虚拟布局):


编辑:也许9patch并不完美,但您可以创建一个xml,只需添加一个带有一个点的图像并设置repeat=“true”

第二次编辑:一个更合适的解决方案可能是添加一个背景。形状可能是这样的(未经测试):



我认为您需要稍微调整一下值,但它应该会起作用。

虽然我不确定,但我认为我们也可以通过以下方式实现这一点:

定义要在屏幕上打印/显示的字符串的总长度

假设你把它定义为20。现在你有两个案例,让我举个例子告诉你

Str1=总数

Str2=200KB

现在可以添加另一个字符串,例如

Str3=“”

对于(i=0;i的救援:

格式化程序可以左对齐要打印的文本,您可以为其指定宽度,这样它将填充文本的空格,使其占据所有所需的宽度,然后您只需将空格替换为点。以下是一个示例:

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(' ', '.'));
                }
        }
}
将最大宽度为20个字符(20)的第一个参数(1$)左对齐(-)打印为字符串

打印第二个参数(2$),最大宽度为15个字符(15)和2个小数点(.2),作为浮点(f)

这意味着第一个值将始终固定为20个字符,第二个值将始终固定为15个字符。然后所有行的长度将始终为35个字符+KB后缀+浮点数的小数点

上述代码生成输出:

Total.........................24.00KB
App...........................24.00KB
USB.storage.app................0.00KB
Data...........................0.00KB
SD.card........................0.00KB

TODO:不要覆盖第一列名称中的合法空格;)

不幸的是,这个答案不起作用,因为9-patch会拉伸,而不是增加对之间的点数是的,只是意识到我也更新了答案,并建议使用xml形状定义重复创建位图耶,重复的位图解决方案可能会起作用,它不是那么优雅,但它会起作用,我愿意接受建议。什么是更优雅的解决方案?点不是印刷点。这适用于固定宽度字体,但不适用于可变宽度字体。
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
%2$15.2fKB\n
Total.........................24.00KB
App...........................24.00KB
USB.storage.app................0.00KB
Data...........................0.00KB
SD.card........................0.00KB