2016-07-27 233 views
2

我有我想這取決於文本的長度無論是大幅面或壓縮格式在TextView中像這樣來佈置一個觀點:如何根據文本大小調整視圖佈局

View layout

達到此目的的最佳方法是什麼?

我想我需要測量文本和控件的長度,並獲得可用空間以查看它們是否適合在一行上。如果他們然後將使用緊湊的佈局,否則使用大的佈局。

這是正確的方法,還是有辦法實現這一點與單一佈局?

+0

你想要的矩形,你TextView的背景嗎? –

回答

0

您需要的佈局是FlowLayout。但是android SDK目前沒有這樣的佈局支持。有很好的第三方庫&其中之一是FlowLayout

搖籃:

compile 'com.wefika:flowlayout:0.4.1' 

在您的佈局:

<com.wefika.flowlayout.FlowLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="start|top"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Lorem ipsum" /> 

</com.wefika.flowlayout.FlowLayout> 
+0

這看起來很有潛力。我有我的控制線性佈局。他們堅持左起立反對冠軍。有什麼辦法可以讓他們堅持右邊?在線性佈局上設置重力沒有任何影響。 – zorro2b

+0

@ zorro2b FlowLayout的子元素可以通過將android:gravity =「right | top」設置爲FlowLayout – sJy

+0

而安排在右側,這並不是我想要的,因爲標題需要與左側對齊。 – zorro2b

0

中的Java文件,如果你想緊湊,如果你想大的一套垂直的LinearLayout中把這兩樣,並設置其方向programically這樣

LinearLayout layout = /* ... */; layout.setOrientation(LinearLayout.VERTICAL);

集Horizo​​natal。 並把基於你從下面的代碼獲得條件寬度

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 
0

你可以嘗試讓用戶設置文本爲所有的textViews和使用後是這樣的:

RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
     ViewGroup.LayoutParams.WRAP_CONTENT); 
if(layout.getWidth()/2<Title.getWidth()){ 
p.addRule(RelativeLayout.BELOW, R.id.Title); 

controls.setLayoutParams(p); 
}else{ 
    p.addRule(RelativeLayout.RIGHT_OF, R.id.Title); 
controls.setLayoutParams(p); 
} 
0

它被稱爲FlowLayout中。谷歌它支持它的多個庫。