我的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中对齐:
答案 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" />