2016-12-31 38 views
0

我有一個AlertDialog冠軍應該是像如何在中間「省略」AlertDialog的標題?

複製「XXX」爲...

如果xxx是一個很長的字符串,我想它是縮短而不是整個標題:重要的是「到...」部分是可見

打一個比方,如果xxx == "A very long text here is being displayed!"我想AlertDialog的標題是:

複印「這裏一個很長的文本是貝因...」來......

怎麼做?

+0

你需要一個報價呢?例如:「xxxxxxxxxxbein ..」,以....... –

+0

@Charuka是的,我完全需要它,因爲它看起來在我寫的文本! – Robb1

+0

基本java沒什麼別的讓我快點做點什麼 –

回答

2

邏輯 =一個字符串>決定你需要顯示>檢查是否具有字符串的長度>刪除不想要的字符,讓你想要的長度>重置新蜇你需要添加其他字符長度>集它作爲頭!

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

+0

謝謝@Charuka。我的問題是**我不知道提前**智能手機屏幕上可用的空間。因此我不能使用'int maxCharYouWant = 25;'。任何建議來解決這個問題? – Robb1

+0

@ Robb1任何方式,即使你添加1000個字符,注意我通過設置一個'textView'來添加頭部,所以如果在第一行沒有足夠的空間頭部,它會去第二..第三..像明智 –

+0

也讀這個http://stackoverflow.com/a/10464760/5188159 –