我想在我的应用程序中创建一个应用程序详细信息屏幕,对于这个最好的设计模式我可以想象是android的默认应用程序详细信息屏幕,它显示在屏幕截图
现在问题在于,我不知道如何在这些键值对之间创建"................"
部分,虚线部分应该可以灵活地捕获以根据文本的大小增加或缩小双方
e.g。
方案1:
Total..........2MB
(10点+文字)
方案2:
Total........200KB
(8点+文字)
因此根据文字大小调整点数。
任何人都可以建议我如何实现这一点,如果你知道在应用程序详细信息场景中显示key-value
对的一些更好的方法(模式),也欢迎。非常欢迎。
答案 0 :(得分:2)
这很简单(虚拟布局):
<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>
我认为你需要稍微调整一下这些值,但它应该有效。
答案 1 :(得分:2)
格式化程序可以左对齐要打印的文本,并且可以为其指定宽度,因此它将填充文本空格以使其占据所有所需的宽度,然后您只需要用点。这是一个例子:
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 $)打印为最大宽度为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:不要覆盖第一列名称中的合法空格;)
答案 2 :(得分:0)
虽然我当然不是,但我仍然想到我们也可以按照以下方式实现这一目标,
您可以定义要在屏幕上打印/显示的字符串的总长度。
假设你定义它20.现在你有两种情况,让我通过一个例子告诉你。
Str1 =总计
Str2 = 200KB
您现在可以添加其他字符串,例如
Str3 =“”;
为(I = 0; I&≤(20-str1.length() - str2.length))
str3 + =“。”;
现在你有三个字符串为“Total”,“200KB / 20KB”和“dots / ...”,你可以在单个TextV或多个TextView的帮助下打印它们。
你也可以尝试计算总长度而不是20.正如我提到的我不确定,所以请不要反对票:P