我遇到了在工具栏中居中文本视图的问题。
当文字太长时,它看起来像这样
正如您所看到的那样,文字略微偏向右侧,或者左侧导航图标有一些填充。
下图中的布局范围
当文字很小时很好
同样,如果可选徽标可见(扳手只是占位符),则第一张图片中显示的文字显示正常
这是代码。如果您需要查看其他内容,请发表评论
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ersen.toolbarcentreproblem.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary">
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:padding="10dp"
android:visibility="gone"
app:srcCompat="@drawable/ic_build_black_24dp"
tools:visibility="visible"/>
<TextView
android:text="Set Holiday Set Holiday Set Holiday Set Holiday"
android:textColor="@android:color/white"
android:textAllCaps="true"
android:layout_gravity="center"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center"
android:textSize="18sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!" />
</LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar.setNavigationIcon(R.drawable.ic_menu);
}
}
我尝试了什么
工具栏上的所有设置为0dp都没有效果
我也尝试在文本视图上应用填充,但是当文本较小时会导致问题。
编辑1:TextView宽度设置为match_parent
同样的问题
编辑2:尝试Narendra Sorathiya解决方案
答案 0 :(得分:0)
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:visibility="visible"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:gravity="center_vertical"
android:text="My Events"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
答案 1 :(得分:0)
我正在探索@Mike M所说的关于制作
的内容只需将您的徽标ImageView的可见性设置为隐身而不是
在我的工具栏中,我有这个
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:padding="10dp"
android:visibility="gone"
app:srcCompat="@drawable/ic_build_black_24dp"
tools:visibility="visible"/>
<android.support.v4.widget.Space
android:id="@+id/space"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="end"
android:visibility="gone"
tools:visibility="visible"/>
<TextView
android:id="@+id/toolbar_title"
android:text="Set Holiday Holiday Set Set S"
android:textColor="@android:color/white"
android:textAllCaps="true"
android:gravity="center"
android:layout_gravity="center"
android:layout_centerInParent="true"
android:maxLines="1"
android:ellipsize="end"
android:textSize="18sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
注意空间小部件
在onResume
,MainActivity
我有这个逻辑
@Override
protected void onResume() {
super.onResume();
if (mLogo.getVisibility() == View.VISIBLE || mToolbar.getMenu().size() > 0) {
mSpace.setVisibility(View.GONE);
return;
}
mSpace.setVisibility(View.VISIBLE);
}
如果徽标可见或工具栏中有菜单项,则会隐藏空间视图,否则会将其设置为可见。
这已经解决了我的问题,文本现在在所有情况下都显示为中心。
这个
有一个问题mToolbar.getMenu().size() > 0
由于此代码是活动的onResume
,因此它将在片段的onCreateOptionsMenu之前调用,因此当它实际上为真时它可能会结束为假,我将更多地探索这个< / p>