【问题标题】:Center item from fragment when parent view doesn't fill whole Screen当父视图未填满整个屏幕时,从片段居中项目
【发布时间】:2016-05-19 22:44:13
【问题描述】:

我的 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 中。

现在我的应用看起来像,我只想将计时器文本和 CircleProgressBar 放在整个屏幕的中心,现在它们在 viewpager 的中间对齐:

【问题讨论】:

  • 你可以发布你想要的截图吗?
  • 添加了照片和更多的定义

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


【解决方案1】:

这是关于片段,而不是 Viewpager。能贴一下fragment的布局吗?

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

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

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

很抱歉,我现在没有布局编辑器。

【讨论】:

    【解决方案2】:

    最后我将我的布局一层一层地移动以获得我想要的结果!

    <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" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多