Hight模式为0或ViewSwitcher只能在android中的realViewSwitcher中以完全模式使用

时间:2013-06-20 09:56:09

标签: android viewswitcher

我得到了高度0,这是用log cat打印的。

在MainJava文件上:

RealViewSwitcher realViewSwitcher = (RealViewSwitcher) findViewById(R.id.horizontal_pager);
        realViewSwitcher.setOnScreenSwitchListener(onScreenSwitchListener);

RealViewSwitcher.java文件,其中包括: @override

protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);

final int width = MeasureSpec.getSize(widthMeasureSpec);
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
if (widthMode != MeasureSpec.EXACTLY) {
    Log.d("TAG", "First MeastueSpece.Exactly Out Put:"+MeasureSpec.EXACTLY);
    Log.d("TAG", "First Width Out Put:"+widthMode);
    throw new IllegalStateException("ViewSwitcher can only be used in EXACTLY mode. at Width Mode");
}

final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
if (heightMode != MeasureSpec.EXACTLY) {

    Log.d("TAG", "First MeastueSpece.Exactly  Out Put:"+MeasureSpec.EXACTLY);
    Log.d("TAG", "First heightModeOut Put:"+heightMode);
    throw new IllegalStateException("ViewSwitcher can only be used in EXACTLY mode. at Height Mode");
}
......

在布局文件中:

<ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginBottom="45dp"
        android:layout_marginTop="54dp" >

        <com.test.RealViewSwitcher
            android:id="@+id/horizontal_pager"
            android:layout_width="fill_parent"
            android:layout_height="0px"
            android:orientation="vertical" 
            android:layout_weight="1" >
        </com.test.RealViewSwitcher>
    </ScrollView>

我在Logcat中得到了这个:

06-20 09:42:55.952: D/TAG(1329): First heightMode Out Put:0
06-20 09:42:55.962: D/TAG(1329): First MeastueSpece.Exactly Out Put:1073741824
06-20 09:42:55.962: W/Trace(1329): Unexpected value from nativeGetEnabledTags: 0
06-20 09:42:55.972: W/Trace(1329): Unexpected value from nativeGetEnabledTags: 0
06-20 09:42:55.972: D/AndroidRuntime(1329): Shutting down VM
06-20 09:42:55.984: W/dalvikvm(1329): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
06-20 09:42:56.253: E/AndroidRuntime(1329): FATAL EXCEPTION: main
06-20 09:42:56.253: E/AndroidRuntime(1329): java.lang.IllegalStateException: ViewSwitcher can only be used in EXACTLY mode. at Height Mode

1 个答案:

答案 0 :(得分:0)

只需硬编码高度。 替换为此,

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="45dp"
    android:layout_marginTop="54dp" >

    <com.test.RealViewSwitcher
        android:id="@+id/horizontal_pager"
        android:layout_width="fill_parent"
        android:layout_height="550dp"
        android:orientation="vertical" 
        android:layout_weight="1" >
    </com.test.RealViewSwitcher>
</ScrollView>