Когда я изменяю любой элемент в моей компоновке, внутренняя компоновка, которую я изменил своей мерой программно, возвращается к своей первой мере
У меня есть круг, который я только один, чтобы показать половину его на моей странице, и повернуть. я выдвинул его в коде и его работе, но всякий раз, когда я хочу, например, изменить текст текстовых представлений или установить его видимость в коде, он снова падает, и если я хочу подтолкнуть его снова, показывается задержка. почему это происходит и как я могу это исправить? или если вы можете предложить другой способ, я был бы счастлив.
Это мой 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>