2016-12-17 36 views
0

我想更改佈局重力TextView
通過XML,你可以通過android:layout_gravity="value"來實現。
我知道,爲了改變重力本身,通過XML,你會做android:gravity="value",並在Java中,你會怎麼做textview.setGravity(Gravity.VALUE);
但可悲的是,沒有textview.setLayoutGravity(VALUE);,所以我堅持。
謝謝!Java中的TextView的Android layout_gravity

回答

1

您將需要使用正確的子類。例如,如果你TextView處於FrameLayout,你將需要:

FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) textView.getLayoutParams(); 
params.gravity = Gravity.CENTER; 
textView.setLayoutParams(params); 

注意layout_gravitysetLayoutGravity設置你的潮流元素,重心在其父,gravitysetGravity集重力的元素中的內容潮流元素。請參閱下面的插圖瞭解更多詳情。

實施例1:

<FrameLayout 
    android:layout_width="400dp" 
    android:layout_height="400dp"> 

    <TextView 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:text="Some Text" /> 

</FrameLayout> 

--------------------------------------------- 
|Some Text         | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
--------------------------------------------- 

實施例2:

<FrameLayout 
    android:layout_width="400dp" 
    android:layout_height="400dp"> 

    <TextView 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:layout_gravity="center" 
     android:text="Some Text" /> 

</FrameLayout> 

--------------------------------------------- 
|           | 
|           | 
|           | 
|           | 
|           | 
|   Some Text      | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
--------------------------------------------- 

實施例3:

<FrameLayout 
    android:layout_width="400dp" 
    android:layout_height="400dp"> 

    <TextView 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="Some Text" /> 

</FrameLayout> 

--------------------------------------------- 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|     Some Text     | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
--------------------------------------------- 

實施例4:

<FrameLayout 
    android:layout_width="400dp" 
    android:layout_height="400dp"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="Some Text" /> 

</FrameLayout> 

--------------------------------------------- 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|     Some Text     | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
--------------------------------------------- 

實施例5:

<FrameLayout 
    android:layout_width="400dp" 
    android:layout_height="400dp"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:text="Some Text" /> 

</FrameLayout> 

--------------------------------------------- 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|     Some Text     | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
|           | 
--------------------------------------------- 
+0

非常感謝! 你的答案與我的答案相結合給了我解決方案! – avi12

0

在線性佈局使用:

android:layout_gravity="value" 

在相對佈局使用特性:

android:layout_centerHorizontal="true" 
android:layout_centerVertical="true" 
android:layout_centerInParent="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 

按您的要求

+0

爲何選擇投票?告訴我,如果我錯了 – Redman

+0

框架佈局呢? – avi12

+0

您可以使用重力作爲框架 – Redman

2

要設置layout_gravity編程

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
params.gravity = Gravity.CENTER; 
youttextview.setLayoutParams(params); 

注意:layout_gravity不適用於相對佈局

+0

TextView的父佈局是相對佈局。我該怎麼辦? – avi12

+0

請參閱Redman對相對佈局的回答,如果要以編程方式添加此內容,請使用addRule方法,如layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL); – USKMobility

+0

我的錯。 TextView的父親是一個嵌套在框架佈局中的相對佈局。 – avi12

0

TextView的通過將其通過一個滾動型包圍的Horizo​​ntalScrollView包圍。
我發現,沒有什麼工作,直到 XML文件中的設置:

<ScrollView 
    android:id="@+id/scrollView" 
    android:layout_width="match_parent" <!-- The value was "wrap_content" before, hence couldn't work --> 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_below="@+id/submit" 
    android:visibility="visible"> 
    <!-- Some more code --> 

後來,我只是用:

textview.setGravity(Gravity.LEFT); 
textview.setTextDirection(View.TEXT_DIRECTION_LTR); 

而且它解決了我的問題。

非常感謝大家!