第一次在這裏發佈。對不起,如果這已被問到。我搜索了幾天,雖然有些帖子似乎相關,但他們似乎沒有解決我的確切問題。TextView垂直引力在ScrollView中不起作用
我有一個ScrollView內的RelativeLayout。在RelativeLayout中,我有一些TextViews。我已經將TextView gravities設置爲center_vertical。當頁面的內容適合單個頁面而無需激活ScrollView時,一切正常。但是,只要內容超出頁面並且ScrollView被激活,center_vertical重力就會被忽略。有趣的是,左/右(開始/結束)重力不會被忽略,只有center_vertical。
這裏是我的代碼的主要部分:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:fillViewport="true" >
<RelativeLayout
android:id="@+id/RelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<TextView
android:id="@+id/cup1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/cup1"
android:textColor="#21386f"
android:textSize="24sp"
android:textStyle="bold" />
<Space
android:id="@+id/Space1"
android:layout_width="match_parent"
android:layout_height="24dp"
android:layout_below="@id/cup1" />
<ImageView
android:id="@+id/canadienslogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@id/Space1"
android:contentDescription="@string/logo"
android:src="@drawable/canadienslogo" />
<TextView
android:id="@+id/score1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/canadienslogo"
android:layout_alignTop="@id/canadienslogo"
android:layout_below="@id/Space1"
android:layout_centerInParent="true"
android:gravity="center_vertical|center_horizontal"
android:paddingLeft="16sp"
android:paddingRight="16sp"
android:text="@string/score1"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/team_canadiens"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/canadienslogo"
android:layout_alignTop="@id/canadienslogo"
android:layout_toEndOf="@id/canadienslogo"
android:layout_toLeftOf="@id/score1"
android:layout_toRightOf="@id/canadienslogo"
android:layout_toStartOf="@id/score1"
android:gravity="center_vertical|start"
android:paddingLeft="2sp"
android:paddingRight="2sp"
android:text="@string/team_canadiens"
android:textSize="14sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/rosebudslogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@id/Space1"
android:contentDescription="@string/logo"
android:src="@drawable/rosebudslogo" />
<TextView
android:id="@+id/team_rosebuds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/rosebudslogo"
android:layout_alignTop="@id/rosebudslogo"
android:layout_toEndOf="@id/score1"
android:layout_toLeftOf="@id/rosebudslogo"
android:layout_toRightOf="@id/score1"
android:layout_toStartOf="@id/rosebudslogo"
android:gravity="center_vertical|end"
android:paddingLeft="2sp"
android:paddingRight="2sp"
android:text="@string/team_rosebuds"
android:textSize="14sp"
android:textStyle="bold" />
下面這個,還有一個空格,後面跟着一個TableLayout。如果表格太大而無法放在單個頁面上,則上面的center_vertical gravity會被忽略。表中的重力似乎沒有受到影響。
下面是該問題的兩個屏幕截圖。第一個有問題,第二個沒有(因爲所有的內容放在一張單頁)......
注意如何文本「蒙特利爾加拿大人」,「3 - 2 「和」波特蘭玫瑰花蕾「得到提升。 center_vertical重力未被應用。
爲了記錄,我只在橫向模式下截取屏幕截圖,因爲它會強制ScrollView啓動並顯示問題。如果我有更大的桌子,縱向模式也會出現同樣的問題,所以這不是一個定位問題。我已經無數次修改了我的代碼,但沒有任何東西可以解決它。我確定這很簡單,我無法弄清楚。這可能與高度的整體密度有關,因爲這實際上是ScrollView開始時唯一改變的地方。我啓用了「開發人員選項」下的「顯示佈局邊界」,並且實際的容器都很好,它只是內容被推高。奇怪的是,Eclipse和Android Studio都沒有在設計模式下顯示問題。 FWIW,我已經在我的Galaxy Nexus和Galaxy Tab 3 Lite上進行了測試,兩者都出現同樣的情況。
希望你們中的一個能讓我看起來很愚蠢,並及時解決它。
在此先感謝您的幫助。
問候,
編輯:新的工作代碼...
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:fillViewport="true" >
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<TextView
android:id="@+id/cup1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/cup1"
android:textColor="#21386f"
android:textSize="24sp"
android:textStyle="bold" />
<Space
android:id="@+id/Space1"
android:layout_width="match_parent"
android:layout_height="24dp" />
<LinearLayout
android:id="@+id/LinearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/canadienslogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:src="@drawable/canadienslogo" />
<TextView
android:id="@+id/team_canadiens"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|start"
android:paddingLeft="2sp"
android:paddingRight="2sp"
android:text="@string/team_canadiens"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/score1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:text="@string/score1"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/team_rosebuds"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|end"
android:paddingLeft="2sp"
android:paddingRight="2sp"
android:text="@string/team_rosebuds"
android:textSize="14sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/rosebudslogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:src="@drawable/rosebudslogo" />
</LinearLayout>
嗨royB,感謝您的快速回復。我嘗試了你的建議,但我不得不將我的佈局從「相對」改爲「線性」。在LinearLayout中,我可以通過選擇圖像高度的wrap_content和文本高度的match_parent來匹配TextView的高度和圖像的高度。我現在遇到的問題是實際得分文本(3 - 2)不能再放在寬度的絕對中心,因爲在線性視圖中沒有center_horizontal或centerInParent。 – Phhoenyxx
沒問題,如果我幫過你,請考慮接受我的回答 – royB
好的,我刪除了一些過多的填充,並向3個TextView添加了layout_weights,而且我似乎正在進入某個地方!謝謝royB! – Phhoenyxx