当父视图不填充整个屏幕时,片段中的中心项

时间:2016-05-19 22:44:13

标签: android xml android-layout android-fragments android-viewpager

我的XML设计遇到了一些麻烦。我已将Viewpager添加到我的应用程序中,并在应用程序顶部添加了一个工具栏。所以,我的问题是,当我尝试将来自属于我的Viewpager的片段的项目重心居中时,将设置在Viewpager的中间,忽略工具栏高度。

所以,我想问一下当父视图没有填满整个屏幕时,是否可以将视图或片段中的项目置于屏幕中间。

我的活动XML就是这个:

<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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<include layout="@layout/toolbar"
    android:id="@+id/toolbar"></include>

<com.example.android.ui.SlidingTabLayout
    android:id="@+id/module_selector_tabs"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="@color/view_pager_top"
    android:layout_below="@id/toolbar"
    android:elevation="4dp"/>
<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/viewPager"
    android:layout_below="@id/module_selector_tabs"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

</RelativeLayout>

我想要居中的项目位于我使用FragmentAdapter动态添加到Viewpager的Fragments中。

现在我的应用程序看起来像,我只想在整个屏幕中居中定时器Text&amp; CircleProgressBar,现在它们在viewpager的midle中对齐:

enter image description here

2 个答案:

答案 0 :(得分:1)

这是关于片段,而不是Viewpager。你可以粘贴片段的布局吗?

从图像中,我要做的是一个有两个孩子的垂直线性布局,第一个用于圆圈,另一个用于按钮。

然后,您可以使用layout_weight来控制子项的开始和结束位置。

有关layout_weight的更多信息: https://developer.android.com/guide/topics/ui/layout/linear.html#Weight

对不起,我现在没有布局编辑器。

答案 1 :(得分:0)

最后,我将布局移到另一个上面以获得我想要的结果!

<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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/fragment_background"
android:orientation="vertical">


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/countdownLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/buttons_layout">

    <com.example.android.voicetimer.ui.CircleProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="@dimen/progressbar_size"
        android:layout_height="@dimen/progressbar_size"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:progressDrawable="@drawable/circular" />

    <Spinner
        android:id="@+id/timer_name_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        style="@style/medium_light_hms"
        android:layout_above="@+id/timerText" />


    <com.example.android.voicetimer.ui.HmsView
        android:id="@+id/timerText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="center">

        <com.example.android.voicetimer.ui.ZeroTopPaddingTextView
            android:id="@+id/hours_ones"
            style="@style/medium_light_hms"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="none"
            android:singleLine="true"
            android:visibility="gone" />

        <TextView
            android:id="@+id/hours_label"
            style="@style/fragment_label"
            android:padding="0dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:ellipsize="none"
            android:singleLine="true"
            android:text="@string/hms_picker_hours_label"
            android:visibility="gone" />

        <com.example.android.voicetimer.ui.ZeroTopPaddingTextView
            android:id="@+id/minutes_tens"
            style="@style/medium_light_hms"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="none"
            android:singleLine="true"
            android:visibility="gone" />

        <com.example.android.voicetimer.ui.ZeroTopPaddingTextView
            android:id="@+id/minutes_ones"
            style="@style/medium_light_hms"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="none"
            android:singleLine="true"/>

        <TextView
            android:id="@+id/minutes_label"
            style="@style/fragment_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:ellipsize="none"
            android:singleLine="true"
            android:text="@string/hms_picker_minutes_label" />

        <com.example.android.voicetimer.ui.ZeroTopPaddingTextView
            android:id="@+id/seconds_tens"
            style="@style/medium_light_hms"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="none"
            android:singleLine="true" />

        <com.example.android.voicetimer.ui.ZeroTopPaddingTextView
            android:id="@+id/seconds_ones"
            style="@style/medium_light_hms"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="none"
            android:singleLine="true"/>

        <TextView
            android:id="@+id/seconds_label"
            style="@style/fragment_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:ellipsize="none"
            android:singleLine="true"
            android:text="@string/hms_picker_seconds_label" />
    </com.example.android.voicetimer.ui.HmsView>
</RelativeLayout>


<LinearLayout
    android:id="@+id/buttons_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:clipChildren="false">

    <ImageView
        android:id="@+id/btnDelete"
        android:layout_width="@dimen/delete_button_size"
        android:layout_height="@dimen/delete_button_size"
        android:layout_gravity="center"
        android:layout_margin="@dimen/icon_margin"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_delete_black"
        android:tint="@color/icon_tint" />