我可以将ActionBar中的主页按钮设置为右侧吗? (android.R.id.home)
我想更改主页按钮的位置,因为该语言使用从右向左键入。
有可能吗?如果是,请告诉我如何做到这一点?
如果不是,我如何在右侧设置ActionBarDrawerToggle?
答案 0 :(得分:1)
您可以创建此类操作栏,但它比夸大菜单要复杂一些。在onCreateOptionsMenu()方法中创建的菜单将始终对齐,放置在拆分操作栏中或隐藏在菜单键下。
如果您希望操作栏只包含两个菜单项 - 一个位于左边缘而另一个位于右边缘 - 则必须在操作栏中创建自定义视图。
自定义视图布局将是这样的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageButton android:src="@drawable/ic_menu_item1"
android:background="?attr/actionBarItemBackground"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:scaleType="centerInside"
android:id="@+id/item1"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"/>
<ImageButton android:src="@drawable/ic_menu_item2"
android:background="?attr/actionBarItemBackground"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:scaleType="centerInside"
android:id="@+id/item2"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"/>
</RelativeLayout>
在主题中定义您要使用自定义视图。主题应包含:
<style name="MyTheme" parent="@style/Theme.Sherlock">
<item name="actionBarStyle">@style/MyActionBarStyle</item>
<item name="android:actionBarStyle">@style/MyActionBarStyle</item>
</style>
<style name="MyActionBarStyle" parent="@style/Widget.Sherlock.ActionBar">
<item name="displayOptions">showCustom</item>
<item name="android:displayOptions">showCustom</item>
</style>
在活动(或片段)中设置自定义视图:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar ab = getSherlock().getActionBar();
LayoutInflater li = LayoutInflater.from(this);
View customView = li.inflate(R.layout.my_custom_view, null);
ab.setCustomView(customView);
ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1);
ibItem1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ...
}
});
ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2);
ibItem2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ...
}
});
}
答案 1 :(得分:0)
Android最近获得了从右到左的ActionBar的支持,但它仅在API 17中提供。如果您的清单设置为android:supportsRtl="true"
,则默认情况下会执行此操作。
答案 2 :(得分:0)
您必须通过致电actionbar.setDisplayShowCustomeEnable(True)
来使用自定义布局,然后对自定义视图进行充气,然后actionbar.setCustomeView(view)
这可以帮助你(ActionBar logo centered and Action items on sides)
答案 3 :(得分:0)
不完全确定这是否是您正在寻找的,但您可以让主页按钮显示在操作栏上的下拉菜单下(3个垂直点图标)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/ic_home"
android:orderInCategory="1"
android:showAsAction="never"
android:title="Home"/>
</menu>
将其设置为“android:showAsAction =”never“”它将显示在下拉菜单下,但是您可能无法在Android Studio模拟器中看到这一点(至少我从未见过它Android Studio的模拟器),不确定Eclipse。
答案 4 :(得分:0)
“因为该语言使用的是从右到左的输入方式...” 一个直接的答案是制作一个主题并在清单中使用它:
在style.xml中,我制作了一个继承了TheAppTheme的主题。
<style name="StoreTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:layoutDirection">rtl</item>
</style>
,并且在manifest.xml中,您可以使用以下主题:
<activity
android:name=".store.ui.Product.ProductMainActivity"
android:label="@string/title_activity_product_details"
android:theme="@style/StoreTheme"/>
或者您可以使整个应用程序在AndroidManifest.xml应用程序标记中使用此主题:
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">