【发布时间】:2018-05-11 10:36:17
【问题描述】:
我的应用上有一个自定义 webview,顶部有一个矩形栏,用于显示页面标题、后退图标和分享按钮。在页面加载时,我会显示“正在加载...”,一旦完成,我就会显示页面标题。
问题是当发生这种情况时,后退图标会从其位置移动或向上跳跃。我不知道为什么。
下面是我的 xml 文件,仅用于栏。
<android.support.constraint.ConstraintLayout
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary">
<ImageButton
android:id="@+id/backIcon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:adjustViewBounds="false"
android:background="?android:selectableItemBackground"
android:cropToPadding="false"
android:gravity="center_vertical"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:scaleType="fitCenter"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/back_icon_small"
android:layout_marginLeft="10dp" />
<TextView
android:id="@+id/articleLoading"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="center_vertical|center_horizontal"
android:maxEms="10"
android:maxLines="1"
android:text="TextView"
android:textColor="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backIcon" />
<ImageButton
android:id="@+id/shareButton"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="15dp"
android:adjustViewBounds="false"
android:background="?android:selectableItemBackground"
android:scaleType="fitCenter"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/button_share_white" />
<TextView
android:id="@+id/articleTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:maxEms="20"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="TextView"
android:textColor="@color/colorAccent"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/shareButton"
app:layout_constraintStart_toEndOf="@id/backIcon"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.6" />
</android.support.constraint.ConstraintLayout>
下面是页面加载完毕后设置Title的方法。
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
progressBar.setProgress(newProgress);
if (newProgress == 100) {
articleTitle.setText(view.getTitle());
progressBar.setVisibility(View.INVISIBLE);
loading.setVisibility(View.INVISIBLE);
articleTitle.setVisibility(View.VISIBLE);
}
}
【问题讨论】: