使用IntelliJ预览ViewFlipper

时间:2014-07-07 03:31:18

标签: android intellij-idea viewflipper

在IntelliJ中,我可以预览屏幕。如果它是ViewFlipper,它只显示第一页。有没有办法预览鳍状肢的所有页面?

我可以略微修改布局并预览每个页面,但我想在不触及布局文件的情况下预览它们。

3 个答案:

答案 0 :(得分:2)

不,不幸的是目前还不可能。您必须切换视图,因为您只能看到第一个ViewFlipper孩子。

我已经提交了一项功能请求,正在考虑中,但当时没有任何承诺:http://youtrack.jetbrains.com/issue/IDEA-123407

答案 1 :(得分:0)

我尝试将ViewFlipper子类化如下:

public class MyViewFlipperextends ViewFlipper {

    private int displayedChild = -1;

    public FixedViewFlipper(Context context) {
        super(context);
    }

    public FixedViewFlipper(Context context, AttributeSet attrs) {
        super(context, attrs);

        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyViewFlipper);
        displayedChild = a.getInt(R.styleable.MyViewFlipper_displayedChild, -1);
        a.recycle();
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();

        if (isInEditMode() && displayedChild != -1)
            setDisplayedChild(displayedChild);
    }

}

您需要将以下内容添加到attrs.xml

<declare-styleable name="MyViewFlipper">
    <attr name="displayedChild" format="integer"/>
</declare-styleable>

然后我尝试通过添加app:displayedChild="1"来切换预览中显示的孩子,但没有成功:根本没有显示孩子。我尝试将逻辑放在onFinishInflateonAttachedToWindow中,结果相同。

我把它放在这里,所以有人可能会在这里发现问题并找到一个急需的解决方案。

答案 2 :(得分:0)

我找到了不错的替代解决方案:我将每个页面都放在一个单独的 xml 文件中。比我用 ViewFlipper:

将它们全部包含到主布局中
<?xml version="1.0" encoding="utf-8"?>
<ViewFlipper
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewFlipper"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/page1" />
    <include layout="@layout/page2" />
    <!-- ... -->

</ViewFlipper>

所以我对每个页面都有预览,主布局文件中的代码不多。