将文本放在警报对话框中消息字段中的方便位置

时间:2014-07-28 19:50:32

标签: android

大家下午好, 我已经成功创建了一个有效的alertdialog,它显示在以下链接中: http://i.stack.imgur.com/XR1Pm.png

后来我认为如果我在第一个玩家的信息权利中移动计算机信息会更好(如图所示:http://i.stack.imgur.com/rj3M6.png)。它会增加消息的可读性,并且通常看起来更好。

我通过互联网搜索了这种方式,但我无法找到解决方案。 谁能告诉我如何有效地达到图2所示的效果?谢谢你的建议。

这是我的dialogalert代码(它不会被编译,但它主要使用来自SharedPreferences的数据,来自strings.xml的字符串,应该理解):

private void showMatchResults(int[] p1results, int[] p2results) {
    AlertDialog.Builder aldb = new AlertDialog.Builder(this);
    aldb.setTitle(getString(R.string.match_summary));
    aldb
            .setMessage(matchResults_message(p1results, p2results))
            .setCancelable(false)
            .setNeutralButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }

            });
    AlertDialog alertDialog = aldb.create();
    alertDialog.show();
}

private String matchResults_message(int[] p1results, int[] p2results) {
    StringBuilder sb = new StringBuilder();
    sb.append(data.getString("player1", getApplicationContext().getString(R.string.player1)));
    int[] results = new int[6];
    System.arraycopy(p1results, 0, results, 0, p1results.length);
    System.arraycopy(p2results, 0, results, p1results.length, p2results.length);
    sb.append(System.getProperty("line.separator"));
    for (int i = 0; i < results.length; i++) {
        if (i == 3) {
            sb.append(System.getProperty("line.separator"));
            if (mode.equals("Two"))
                sb.append(data.getString("player2", getApplicationContext().getString(R.string.player2)));
            else sb.append(getString(R.string.computer) + " " + ComputerAI.getDifficulty(this));
            sb.append(System.getProperty("line.separator"));
        }
        if (i == 0 || i == 3) sb.append(getString(R.string.wins));
        else if (i == 1 || i == 4) sb.append(getString(R.string.draws));
        else sb.append(getString(R.string.loses));
        sb.append(" "+results[i]);
        sb.append(System.getProperty("line.separator"));
    }
    return sb.toString();
}

2 个答案:

答案 0 :(得分:1)

我认为最简单的方法是创建自定义XML布局并使用:

setView(getLayoutInflater().inflate(R.layout.custom_two_columns_layout, null));

我想如何创建这种布局很容易。

答案 1 :(得分:1)

您必须使用两个LinearLayouts创建自定义布局,将主布局权重总和设置为2,其他人将layout_weight设置为1。在每个TextView中添加LinearLayout(总共2 TextView s)。以下是在AlertDialog中使用该自定义布局的方法:

How to implement a custom AlertDialog View