Ответ 1
Первое, что я могу исправить, это попытаться установить
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right" >
на ваш RelativeLayout
. Поскольку по умолчанию в Android каждый вид добавляется слева направо (если вы не укажете что-то еще в своем коде).
И если это не сработает, я бы добавил android:layout_width="90dip"
или другое значение в зависимости от изображения и ваших тестов. Второй вариант больше похож на обходной путь, но я думаю, что он будет работать на всех устройствах.
Изменить:
Как я нашел, есть небольшая проблема с использованием RelativeLayout
и пользовательских просмотров в ActionBar, поэтому лучше использовать LinearLayout
и установить LayoutParams
через код. Измените свой xml, чтобы он выглядел следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/asus" />
</LinearLayout >
и в вашем MainActivity.class используйте это:
import com.actionbarsherlock.app.ActionBar.LayoutParams;
....
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("OMG");
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_VERTICAL);
View customNav = LayoutInflater.from(this).inflate(R.layout.img, null); // layout which contains your button.
actionBar.setCustomView(customNav, lp);
actionBar.setDisplayShowCustomEnabled(true);