gpt4 book ai didi

java - 如何将 "ellipsize"AlertDialog的标题放在中间?

转载 作者:行者123 更新时间:2023-12-02 03:08:29 25 4
gpt4 key购买 nike

我有一个AlertDialog标题应该类似于

Copying "xxx" to...

万一xxx是一个很长的字符串,我希望缩短它而不是整个标题:重要的是“to...”部分可见!

举个例子,如果 xxx == "A very long text here is being displayed!"我希望 AlertDialog 的标题为:

Copying "A very long text here is bein..." to...

怎么做?

最佳答案

逻辑 = 取一个字符串> 决定您需要显示的长度> 检查您拥有的字符串的长度> 删除不需要的字符以保持您想要的长度> 用您需要的其他字符重置新字符串添加 > 将其设置为头部!

 String headText = "add anything you want here as head";


String newHead;
int maxCharYouWant= 25; // your word limit to display

if(headText.length()>25){
newHead = headText.substring(0, Math.min(headText.length(), 18)); // Get the first N number of words-> here 18
newHead = "\""+newHead+".."+"\""+"to.."; // reset with your format
}else {
newHead = headText; // length is ok no need to change it
}


LayoutInflater inflater = getLayoutInflater();
View dialogLayout = inflater.inflate(R.layout.body_layout, null); // for body

AlertDialog.Builder builder = new AlertDialog.Builder(Test.this);
TextView textView = new TextView(Test.this);
textView.setText(newHead);
builder.setCustomTitle(textView);// set your heading

builder.setView(dialogLayout);
builder.show();

编辑:要获取屏幕的字符数,您可以使用类似这样的方法(我没有在多个设备上测试此方法,1080 它返回 32..您可以尝试看看)

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);

DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = (int)((float)size.x/metrics.scaledDensity);

TextView textView = new TextView(Test.this);
int totalCharstoFit= textView.getPaint().breakText(headText, 0, headText.length(), true, width, null);

了解更多关于breakText的信息

关于java - 如何将 "ellipsize"AlertDialog的标题放在中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41407506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com