以这种方式居中布局的好解决方案是啥?(android xml)

Posted

技术标签:

【中文标题】以这种方式居中布局的好解决方案是啥?(android xml)【英文标题】:Which is a good solution to center the layouts in this way?(android xml)以这种方式居中布局的好解决方案是什么?(android xml) 【发布时间】:2018-01-29 06:05:23 【问题描述】:

我不想使用过多的线性布局来设置重心。有更好的解决方案吗?谢谢!

这是线性布局的解决方案,但有人告诉我我需要使用相对布局来实现,因为使用太多线性布局会导致渲染缓慢,但我没有成功使用相对布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:orientation="vertical"
    tools:context="com.example.dan.movietracker.fragments.HomeFragment">



    <LinearLayout
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_gravity="center_horizontal">
        <TextView
            android:id="@+id/action_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:text="@string/action"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
          />
        <TextView
            android:id="@+id/advendure_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/adventure"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/animation_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/animation"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_marginTop="@dimen/margin_top_genres"
        android:layout_gravity="center_horizontal">
        <TextView
            android:id="@+id/comedy_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:text="@string/comedy"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/crime_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/crime"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/documntary_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/documentary"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_marginTop="@dimen/margin_top_genres"
        android:layout_gravity="center_horizontal">
        <TextView
            android:id="@+id/drama_Text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:text="@string/drama"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/family_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/crime"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/fantasy_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/documentary"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_marginTop="@dimen/margin_top_genres"
        android:layout_gravity="center_horizontal">
        <TextView
            android:id="@+id/history_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:text="@string/history"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/horror_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/horror"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/music_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/music"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_marginTop="@dimen/margin_top_genres"
        android:layout_gravity="center_horizontal">
        <TextView
            android:id="@+id/mystery_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:text="@string/mystery"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/romance_Text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/romance"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/scienceFiction_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/science_fiction"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_marginTop="@dimen/margin_top_genres"
        android:layout_gravity="center_horizontal">
        <TextView
            android:id="@+id/thriller_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:text="@string/thriller"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/war_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/war"
            android:layout_marginRight="@dimen/margin_right_genres"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/western_text"
            android:layout_
            android:layout_
            android:background="@color/genresTextBackground"
            android:padding="@dimen/padding_genres"
            android:text="@string/western"
            android:textColor="@color/genresTextColor"
            android:textSize="@dimen/text_size"
            android:textStyle="bold"
            />
    </LinearLayout>



</LinearLayout>

【问题讨论】:

您能否至少包含一些代码,以便尽最大努力生成此活动布局? 至少放一些你的xml代码。 我添加了线性布局的代码。谢谢。 【参考方案1】:

这样做的一种方法是创建item_layout.xml 并在下面添加:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_
    android:layout_
    android:gravity="center">
    <Button
        android:layout_
        android:layout_
        android:layout_toLeftOf="@+id/centerButton"
        android:text="Mistery"/>
    <Button
        android:id="@+id/centerButton"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:text="Romance"/>
    <Button
        android:layout_
        android:layout_
        android:layout_toRightOf="@+id/centerButton"
        android:text="Science Fiction"/>
</RelativeLayout>

然后每次你添加一些东西你可以用它作为行项目布局。希望对你有帮助

【讨论】:

谢谢,但我需要使用相对布局。 所以我可以把它改成 rel 布局 非常感谢!是否可以仅使用一种相对布局来实现?

以上是关于以这种方式居中布局的好解决方案是啥?(android xml)的主要内容,如果未能解决你的问题,请参考以下文章

CSS:创建凸起的盒子效果的好方法是啥?

调整大小后使用自动布局以编程方式居中 UIImageVIew

以编程方式自动布局不垂直居中

TextView图文居中混排

Toolbar标题居中

Android:具有垂直居中控件的布局