Когда я изменяю любой элемент в моей компоновке, внутренняя компоновка, которую я изменил своей мерой программно, возвращается к своей первой мере

У меня есть круг, который я только один, чтобы показать половину его на моей странице, и повернуть. я выдвинул его в коде и его работе, но всякий раз, когда я хочу, например, изменить текст текстовых представлений или установить его видимость в коде, он снова падает, и если я хочу подтолкнуть его снова, показывается задержка. почему это происходит и как я могу это исправить? или если вы можете предложить другой способ, я был бы счастлив.

Это мой 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) {

    }

1 ответ

Я нашел решение для моей проблемы. фактически измерение происходит после создания, и это было причиной задержки. я просто положил минус маржи в 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>
Другие вопросы по тегам