第一次在这里发帖。对不起,如果已经问过这个问题。我搜索了几天,虽然有些帖子看似相关,但它们似乎并没有解决我的确切问题。
我在ScrollView中有一个RelativeLayout。在RelativeLayout中,我有一些TextViews。我已将TextView重力设置为center_vertical。当页面内容适合单个页面而不需要激活ScrollView时,一切正常。但是,只要内容超出页面并且ScrollView被激活,就会忽略center_vertical gravity。有趣的是,左/右(开始/结束)的重力不会被忽略,只有中心的重力。
这是我的代码的主要部分:
<?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" />
在此之下,还有另一个Space,后跟TableLayout。如果表太大而无法放在单个页面上,则忽略上面的center_vertical gravity。表中的重力似乎没有受到影响。
以下是该问题的两个屏幕截图。第一个有问题,第二个没有(因为所有内容都适合单个页面)......
请注意“蒙特利尔加拿大人队”“3 - 2”和“波特兰玫瑰花蕾”的文字是如何提升的。没有应用center_vertical引力。
为了记录,我只在横向模式下截取屏幕截图,因为它会强制ScrollView启动并显示问题。如果我要有更大的表格,同样的问题也会出现在纵向模式中,所以这不是一个方向问题。我已经无数次修改了我的代码,但似乎没有什么能解决它。我确信它很简单,我无法弄明白。它可能与高度的整体密度有关,因为当ScrollView启动时,这确实是唯一的变化。我在Developer Options下启用了“Show layout bounds”,实际的容器很好,它只是内容被推高了。奇怪的是,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>
答案 0 :(得分:0)
不能说它会解决你的问题,但你有一些怪癖:
android:id="@+id/score1"
android:layout_alignBottom="@id/canadienslogo"
android:layout_alignTop="@id/canadienslogo"
您无法将bottom
和top
对齐。如果你想匹配2个视图的高度 - 然后给它们一个高度
具有相同问题的另一个布局:
android:id="@+id/team_canadiens"
android:layout_alignBottom="@id/canadienslogo"
android:layout_alignTop="@id/canadienslogo"
android:layout_toEndOf="@id/canadienslogo"