首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用详细信息屏幕android

应用详细信息屏幕android
EN

Stack Overflow用户
提问于 2013-01-22 23:40:03
回答 3查看 565关注 0票数 3

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

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

例如:

场景1:

Total..........2MB (10点+文本)

场景2:

Total........200KB (8点+文本)

因此,点会根据文本大小进行调整。

谁能建议我如何实现这一点,也请如果你知道一些更好的方式(模式)来显示应用程序的细节场景中的key-value对,这是最受欢迎的。

EN

回答 3

Stack Overflow用户

发布于 2013-01-22 23:45:04

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

代码语言:javascript
复制
<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作为背景。形状可能是这样的(未经测试):

代码语言:javascript
复制
<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>

我认为您需要对值进行一些调整,但它应该会起作用。

票数 2
EN

Stack Overflow用户

发布于 2013-01-23 00:31:21

java.util.Formatter拯救了我们:

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

代码语言:javascript
复制
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(' ', '.'));
                }
        }
}

这里有趣的部分是格式字符串:

代码语言:javascript
复制
%1$-20s

将第一个参数(1$)左对齐(-),最大宽度为20个字符(20)打印为字符串。

代码语言:javascript
复制
%2$15.2fKB\n

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

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

上面的代码生成以下输出:

代码语言:javascript
复制
Total.........................24.00KB
App...........................24.00KB
USB.storage.app................0.00KB
Data...........................0.00KB
SD.card........................0.00KB

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

票数 2
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14462306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档