0

我有以下代码:Android的滚动型不居中

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 
    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/activity_list_films"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Back" 
       android:onClick="back"/> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

但是按钮,我增加了内部的LinearLayout动态的东西,都出现在屏幕的左上角。我究竟做错了什么?

我曾尝试将layout_gravity="center"gravity="center"放在内部的LinearLayout中,但这没有帮助。

谢谢。

回答

2

你的LinearLayout宽度wrap_content:它不占用屏幕的整个宽度,不能横向中心内容。因此,将其更改为android:layout_width="match_parent"还设置layout_gravitycenter_horizontalandroid:layout_gravity="center_horizontal"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

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

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="back" 
       android:text="Back" /> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 
0

请设置宽度 - >match_parent的LinearLayout

 <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent"<!--change this one --> 
      android:layout_height="wrap_content" 
      android:id="@+id/activity_list_films"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Back" 
      android:onClick="back"/> 
    </LinearLayout> 

否则,你可以设置你LinesrLayout的中心。它将在您的ScrollView的中心。

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/activity_list_films" 
     android:gravity="center"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Back" 
      android:onClick="back"/> 
    </LinearLayout> 
+3

滚动型的儿童不应该有一个高度match_parent,它违背了整个目的:内容永远不会比滚动视图更大,它赢得“T滚动的建议 –

+0

@JulienArzul感谢,并改变了代码。 –

0

试试这个

<ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity = "center" 
      android:gravity="center" 
      android:id="@+id/activity_list_films"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Back" 
       android:onClick="back"/> 
     </LinearLayout> 
    </ScrollView> 
0

你不需要改变你的Linear LayoutHeightScroll View

如果这里面Scroll View的内容不会滚动。

你只需要给android:layout_gravity="center_horizontal"Linear Layout除了把所有的相同。

遵循以下Layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:id="@+id/activity_list_films" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:orientation="vertical"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="back" 
       android:text="Back" /> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 
0
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 
    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:fillViewport="true" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:id="@+id/activity_list_films"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Back" 
       android:onClick="back"/> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

你缺少fillViewPort了滚动