在IntelliJ中,我可以预览屏幕。如果它是ViewFlipper,它只显示第一页。有没有办法预览鳍状肢的所有页面?
我可以略微修改布局并预览每个页面,但我想在不触及布局文件的情况下预览它们。
答案 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"
来切换预览中显示的孩子,但没有成功:根本没有显示孩子。我尝试将逻辑放在onFinishInflate
和onAttachedToWindow
中,结果相同。
我把它放在这里,所以有人可能会在这里发现问题并找到一个急需的解决方案。
答案 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>
所以我对每个页面都有预览,主布局文件中的代码不多。