Java 如何";“省略”;中间的AdvtTalk的标题?

Java 如何";“省略”;中间的AdvtTalk的标题?,java,android,string,android-alertdialog,Java,Android,String,Android Alertdialog,我有一个AlertDialog,它的标题应该是 正在将“xxx”复制到 如果xxx是一个很长的字符串,我希望它被缩短,而不是整个标题:重要的是“to…”部分是可见的 举个例子,如果xxx==“这里显示了很长的文本!”我希望AlertDialog的标题是: 正在将“此处有很长的文本…”复制到 如何操作?逻辑=获取字符串>确定需要显示的长度>检查您拥有的字符串长度>删除不需要的字符以保持所需长度>使用需要添加的其他字符重置新钉住>将其设为头部 String headText = "add anyt

我有一个
AlertDialog
,它的标题应该是

正在将“xxx”复制到

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

举个例子,如果
xxx==“这里显示了很长的文本!”
我希望AlertDialog的标题是:

正在将“此处有很长的文本…”复制到


如何操作?

逻辑=获取字符串>确定需要显示的长度>检查您拥有的字符串长度>删除不需要的字符以保持所需长度>使用需要添加的其他字符重置新钉住>将其设为头部

 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


阅读有关

逻辑的更多信息=获取字符串>确定需要显示的长度>检查您拥有的字符串长度>删除不需要的字符以保持所需长度>使用需要添加的其他字符重置新钉住>将其设置为头部

 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



阅读更多关于

的信息,您也需要该报价吗?例如:“XXXXXXXXX BEIN…”到……@Charuka是的,我需要它,就像我写的文本中所显示的那样!基本java没有其他让我快速做一些事情你明白我做了什么吗?是的!请在你的回答下面检查我的评论。你也需要那句话吗?例如:“XXXXXXXXX BEIN…”到……@Charuka是的,我需要它,就像我写的文本中所显示的那样!基本java没有其他让我快速做一些事情你明白我做了什么吗?是的!请在您的回答下查看我的评论。我的问题还在于,我事先不知道智能手机屏幕上的可用空间。因此,我不能使用
int maxCharYouWant=25。有什么解决这个问题的建议吗?@Robb1任何方式即使你添加了1000个字符,注意我通过设置
textView
来添加头部,因此如果第一行中没有足够的空间容纳头部,它将转到第二行。。第三就像wiseread一样,这不是一个线条的问题。我的意思是,在5英寸的屏幕上,我希望它显示为“复制”一个很长的文本,而在4英寸的屏幕上,类似于“复制”一个很长的文本…到…»。它必须根据屏幕大小进行调整!使用这个
DisplayMetrics=getResources().getDisplayMetrics();int宽度=(int)((float)size.x/metrics.scaledDensity)
int totalCharstoFit=textView.getPaint().breakText(headText,0,headText.length(),true,width,null)获取int并将其设置为yourcharlimit我得到32作为limitThank@Charuka。我的问题还在于,我事先不知道智能手机屏幕上的可用空间。因此,我不能使用
int maxCharYouWant=25。有什么解决这个问题的建议吗?@Robb1任何方式即使你添加了1000个字符,注意我通过设置
textView
来添加头部,因此如果第一行中没有足够的空间容纳头部,它将转到第二行。。第三就像wiseread一样,这不是一个线条的问题。我的意思是,在5英寸的屏幕上,我希望它显示为“复制”一个很长的文本,而在4英寸的屏幕上,类似于“复制”一个很长的文本…到…»。它必须根据屏幕大小进行调整!使用这个
DisplayMetrics=getResources().getDisplayMetrics();int宽度=(int)((float)size.x/metrics.scaledDensity)
int totalCharstoFit=textView.getPaint().breakText(headText,0,headText.length(),true,width,null)获取int并将其设置为yourcharlimit我得到32作为限制