1

我有一個Fragment,其佈局包含LinearLayout中的TextView。我希望在運行時動態更改textView的高度,並且我成功地將它更改爲比最初值更低的值,它似乎工作。但是,當我把一個較高的值,textView只調整其高度最多父母的高度。 (我檢查父高度和它的價值始終是592)Android:無法將textView高度值更改爲運行時的較大值

fragment_layout.xml

<LinearLayout 
     android:id="@+id/af_content" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/mTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:singleLine="false" 
      android:text="@string/text" 
      android:textSize="@dimen/tv_size" /> 

    </LinearLayout> 

FrgmentClass.java

TextView mTv = (TextView) rootView.findViewById(R.id.mTextView); 

int newHeight = value; 

mTv.setHeight(value); 

如果值是像200它的工作原理低值,但對於像1000這樣的更大值而言,textview最多隻能調整爲父高度。

我也試過這個,但沒有任何值的結果,雖然低於或高於原始值。我試過使用invalidate(),requestLayout()和refreshDrawableState(),但問題仍然存在。

編輯1

我已經設置靜態xml文件中,比他的父母不再TextView的高度值和它的作品(雖然我想動態設置它)

android:layout_height="1000dp" 

所以TextView中看起來像這樣的佈局:

fragment_layout.xml

<LinearLayout 
     android:id="@+id/af_content" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/mTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="1000dp" 
      android:gravity="center" 
      android:singleLine="false" 
      android:text="@string/text" 
      android:textSize="@dimen/tv_size" /> 

    </LinearLayout> 

但現在在運行時我成立了滾動的方法來TextView的,它什麼都不做,而不是滾動:

FrgmentClass.java

TextView mTv = (TextView) rootView.findViewById(R.id.mTextView); 

mTv.setMovementMethod(new ScrollingMovementMethod()); 

爲什麼不滾動?

+1

它會使textView與父母允許的一樣大。最終你可以使textView滾動 – Hitman

+0

試圖應用你的答案,但一個新問題。我編輯了這個問題!謝謝 – 3Way

回答

0

把LinearLayout中,滾動型是這樣的:

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true" > 

    <LinearLayout 
     android:id="@+id/af_content" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/mTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:singleLine="false" 
      android:text="@string/text" 
      android:textSize="@dimen/tv_size" /> 
    </LinearLayout> 

</ScrollView> 
+0

謝謝!它的工作原理,但只有當我把靜態值的高度屬性在XML文件! – 3Way

0

只需設置你的TextView的

android:maxLines = "AN_INTEGER" 
android:scrollbars = "vertical" 

屬性在佈局的XML文件。

然後用:

textView.setMovementMethod(new ScrollingMovementMethod()); 

在你的代碼。