我有一个包含自定义视图的操作栏但由于某种原因,当我将自定义视图添加到操作栏时,我在actionBar
中声明的AndroidManifest.xml
标签未显示。这是我的尝试:
的AndroidManifest.xml:
<activity android:name=".com.tabs.activity.CreatePost"
android:label="Create Post"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateVisible">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".com.tabs.activity.news_feed"/>
</activity>
操作栏布局: create_post_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".CreatePost">
<item
android:id="@+id/privacy_toggle"
android:title=""
app:showAsAction="always"
android:orderInCategory="1"
android:actionLayout="@layout/privacy_toggle_layout" />
<item
android:id="@+id/send_post"
android:orderInCategory="2"
android:title="Send"
app:showAsAction="always" />
</menu>
privacy_toggle_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioGroup
android:checkedButton="@+id/offer"
android:id="@+id/privacy_toggle"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:background="@drawable/pick_out_line"
android:orientation="horizontal"
android:layout_alignParentRight="true">
<RadioButton
android:layout_marginTop="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:id="@+id/public_toggle"
android:background="@drawable/toggle_widget_background"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="Public"
android:textColor="@color/white" />
<RadioButton
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:layout_marginBottom="1dp"
android:id="@+id/private_toggle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/toggle_widget_background"
android:button="@null"
android:gravity="center"
android:text="Private"
android:checked="true"
android:textColor="@color/white" />
</RadioGroup>
</RelativeLayout>
CreatePost.java(我只是展示了如何实例化操作栏)
private void setupActionBar(){
Toolbar toolbar = (Toolbar) findViewById(R.id.create_post_toolbar);
setSupportActionBar(toolbar);
//Back bar enabled
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
//Toggle bar enabled
ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.privacy_toggle_layout);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM);
final RadioGroup privacyToggle = (RadioGroup) findViewById(R.id.privacy_toggle);
final RadioButton publicToggle = (RadioButton) findViewById(R.id.public_toggle);
final RadioButton privateToggle = (RadioButton) findViewById(R.id.private_toggle);
privateToggle.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));
//Set listener for clicking on toggle
privacyToggle.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(checkedId == R.id.public_toggle){
System.out.println("Toggled public");
}
else {
System.out.println("Toggled private");
}
}
});
}
即使我有ActionBar.DISPLAY_SHOW_TITLE
,AndroidManifest.xml中声明的label
也没有显示,而且我也没有添加任何可能阻止标签的填充/边距展示。这张照片展示了正在发生的事情。感谢任何帮助,感谢] 1
答案 0 :(得分:1)
如上面评论中所述,此链接 -
Toolbar title with custom view
讨论了保留标题并将自定义视图添加到现有工具栏声明的方法。
要保留标题,要注意的主要事项是您必须确保自定义视图不会妨碍/覆盖现有标题。
例如 -
的toolbar.axml<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/White"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:layout_gravity="right"
android:elevation="4dp">
<RelativeLayout
android:id="@+id/toolbar_customview"
android:layout_width="50dp"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="right" />
</android.support.v7.widget.Toolbar>
会在工具栏的RHS上给你一个相对布局,让标题显示出来。然后,您可以FindViewById,然后根据需要在您的Activity / Fragment中插入您喜欢的任何自定义视图。
显然,您必须调整宽度以保留标题,并允许空间添加自定义详细信息。
如果你只是想要一个真正自定义的设计(就像你的那样,几乎没有标准标题的空间),那么你最好自己为标题添加一个textview并确保为该Activity设置而不是SetTitle。