0

我有一个圆圈,我只在我的页面中显示一半,然后旋转。我在代码和它的锅里把它推了上去,但是任何时候我想改变文本视图的文本或在代码中设置它的可见性,它会再次下降,如果我想再次把它推上去,延迟就会显示出来。为什么会发生,我该如何解决?或者如果你能建议任何其他方式,我会很高兴。

这是我的 xml 布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background_blue"
    android:fitsSystemWindows="true">



    <com.aa.ccc.activities.CustomLinearLayout
        android:id="@+id/QuickPlayClipLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal">

        <RelativeLayout
            android:id="@+id/clip_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal" />
    </com.aa.ccc.activities.CustomLinearLayout>

        <TextView
            android:id="@+id/text_no_score"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            />



</RelativeLayout>

这是 CustomLinearLayout 类:

   public CustomLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        myContext = context;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec+((int)myContext.getResources().getDimension(R.dimen.quickplay_offset)));
    }

我在我的代码中设置了 QuickPlayClipLayout 的位置,如下所示:

 @BindView(R.id.QuickPlayClipLayout)
    LinearLayout mainLayout;



    public static GameTestFragment newInstance() {
        GameTestFragment fragment = new GameTestFragment();
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


    @Override
    public void onAnimationStart(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        mainLayout.setVisibility(View.VISIBLE);
        mainLayout.layout(0, -(int) this.getResources().getDimension(R.dimen.quickplay_offset),
                mainLayout.getWidth(), mainLayout.getHeight() + (int) this.getResources().getDimension(R.dimen.quickplay_offset));

    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
4

1 回答 1

0

我找到了解决我的问题的方法。实际上 onmeaseure 发生在 oncreate 之后,这是延迟的原因。我只是在 CustomLinearLayout 中放了负边距以将其推高。并删除执行该功能的代码。

   <com.aa.ccc.activities.CustomLinearLayout
    android:id="@+id/QuickPlayClipLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_marginTop="-95dp"
    android:gravity="center_horizontal|top">

    <RelativeLayout
        android:id="@+id/clip_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal" />
</com.aa.ccc.activities.CustomLinearLayout>
于 2017-09-18T05:29:37.407 回答