scrollView内部的模拟时间选择器不显示时间选择器

时间:2016-05-16 19:48:29

标签: android timepicker

因此,无论timePicker是否在scrollView中,都会正确显示纵向模式。

enter image description here

在scroolView内部时的横向模式。

enter image description here

没有scroolView时的横向模式。

enter image description here

[编辑]代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.aapps.groupalarmclock.NewAlarmActivity">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    android:src="@drawable/background"
    android:alpha="@dimen/background_transparency"
    android:layout_centerHorizontal="true" />

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="@dimen/toolbar_height"
    android:layout_alignParentTop="true"
    android:weightSum="2"
    android:background="@color/colorToolbar"
    android:gravity="center_vertical"
    android:id="@+id/linearLayout">

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:id="@+id/rl_cancle"
        android:layout_weight="1"
        android:background="@drawable/click_effect"
        android:gravity="center">

        <ImageView
            android:layout_width="@dimen/toolbar_icon_size"
            android:layout_height="@dimen/toolbar_icon_size"
            android:id="@+id/iv_cancel"
            android:src="@drawable/cancel"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:layout_marginRight="@dimen/cancel_done_right_margin"
            android:layout_marginEnd="@dimen/cancel_done_right_margin"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/colorText"
            android:id="@+id/tv_cancel"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/iv_cancel"
            android:layout_toEndOf="@+id/iv_cancel" />

    </RelativeLayout>

    <View
        android:layout_width="1dp"
        android:layout_height="@dimen/separator_height"
        android:background="@color/colorLineSeparator"
        android:id="@+id/v_cancel_done">
    </View>

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:id="@+id/rl_done"
        android:layout_weight="1"
        android:background="@drawable/click_effect"
        android:gravity="center">

        <ImageView
            android:layout_width="@dimen/toolbar_icon_size"
            android:layout_height="@dimen/toolbar_icon_size"
            android:id="@+id/iv_done"
            android:src="@drawable/done"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:layout_marginRight="@dimen/cancel_done_right_margin"
            android:layout_marginEnd="@dimen/cancel_done_right_margin"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/colorText"
            android:id="@+id/tv_done"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/iv_done"
            android:layout_toEndOf="@+id/iv_done" />

    </RelativeLayout>

</LinearLayout>


<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/scrollView"
    android:layout_below="@+id/linearLayout"
    android:layout_centerHorizontal="true"
    android:fillViewport="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lltp">


        <TimePicker tools:targetApi="23"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/timePicker"
            android:timePickerMode="clock"
            android:background="#80FFFFFF"/>

     </RelativeLayout>

</ScrollView>

任何人都知道出了什么问题?

2 个答案:

答案 0 :(得分:2)

ScrollView中有一个属性,指示scrollview是否应该拉伸其内容以填充视口....默认情况下,它设置为false,在横向模式下打开时,它不起作用。

所以设置

android:fillViewport="true"

在Scrollview中,它应该可以工作。

更多信息 - http://developer.android.com/reference/android/widget/ScrollView.html

答案 1 :(得分:0)

我在使用Android 5.1(API 22)的设备上遇到了同样的问题,但android:fillViewport="true"在我的情况下无法解决此问题。但是如果我们添加额外的布局作为TimePicker的父级,我们可以解决这个问题。

以下示例显示了固定布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:minHeight="200dp"
                android:orientation="horizontal">

                <TimePicker
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="center_horizontal" />
            </LinearLayout>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|bottom"
                android:gravity="right|center_vertical"
                android:onClick="onSave"
                android:text="Save" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

请注意,TimePicker位于具有android:minHeight="200dp"参数的LinearLayout内,而TimePicker本身具有android:layout_width="match_parent"android:layout_height="match_parent"。这有助于解决ladscape方向的问题。 minHeight参数可以包含您需要的任何值,但应该用于正确呈现TimePicker。