Я бы хотел добавить TextView на свою пользовательскую панель инструментов таким образом, чтобы я мог установить его параметры макета в соответствии с его положением с или без OptionsMenu на панели инструментов. Я хотел бы использовать один и тот же макет панели инструментов в нескольких фрагментах AppCompatActivities +. Проблема в том, что когда на панели инструментов нет меню, TextView «касается» правой стороны без полей:
Если я добавлю поле или отступ, то оно «всегда будет там», поэтому, даже если есть меню, оно будет слишком сильно сдвигать его влево.
Как я могу изменить свой макет, чтобы иметь разрыв в 16dp между TextView и правой стороной экрана, когда нет меню? Или как программно определить, есть ли меню опций?
Макет:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity"
tools:menu="@menu/main">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:gravity="center_vertical|end">
<TextView
android:id="@+id/toolbar_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="19:48" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
код:
public class BaseUpdatedActivity extends AppCompatActivity implements Updater.UpdateListener {
private TextView toolbarText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
toolbarText = findViewById(R.id.toolbar_text);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
protected void isThereOptionsMenu(boolean is) {
// I could set the margin of the textview here
// if I knew how to detect if there's an options menu
// Note: the menu is added from the fragments
}
@Override
public void onResume() {
super.onResume();
Updater.getInstance().registerListener(this);
}
@Override
public void onPause() {
super.onPause();
Updater.getInstance().unregisterListener(this);
}
@Override
public void onUpdate(Update update) {
if (toolbarText != null && update != null) {
String lastUpdatedAt = DateHelper.timeFormat.format(new Date());
toolbarText.setText(lastUpdatedAt);
}
}
}