我有一個AlertDialog
其冠軍應該是像如何在中間「省略」AlertDialog的標題?
複製「XXX」爲...
如果xxx
是一個很長的字符串,我想它是縮短而不是整個標題:重要的是「到...」部分是可見!
打一個比方,如果xxx == "A very long text here is being displayed!"
我想AlertDialog的標題是:
複印「這裏一個很長的文本是貝因...」來......
怎麼做?
我有一個AlertDialog
其冠軍應該是像如何在中間「省略」AlertDialog的標題?
複製「XXX」爲...
如果xxx
是一個很長的字符串,我想它是縮短而不是整個標題:重要的是「到...」部分是可見!
打一個比方,如果xxx == "A very long text here is being displayed!"
我想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 ..你可以嘗試,看看)屏幕
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
謝謝@Charuka。我的問題是**我不知道提前**智能手機屏幕上可用的空間。因此我不能使用'int maxCharYouWant = 25;'。任何建議來解決這個問題? – Robb1
@ Robb1任何方式,即使你添加1000個字符,注意我通過設置一個'textView'來添加頭部,所以如果在第一行沒有足夠的空間頭部,它會去第二..第三..像明智 –
也讀這個http://stackoverflow.com/a/10464760/5188159 –
你需要一個報價呢?例如:「xxxxxxxxxxbein ..」,以....... –
@Charuka是的,我完全需要它,因爲它看起來在我寫的文本! – Robb1
基本java沒什麼別的讓我快點做點什麼 –