SherlockActionBar: как настроить CustomView против actionBar
Вопрос:
Как мне вернуть титул?
Вот скриншот (отсутствует заголовок):
Настройка панели действий:
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("My Title");
actionBar.setIcon(drawable.dropdown_user);
View mLogoView = LayoutInflater.from(this).inflate(R.layout.mLogoView, null);
actionBar.setCustomView(mLogoView);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
Млоговью.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="match_parent" >
<ImageView
android:id="@+id/img_merchant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/infoflex">
</ImageView>
</RelativeLayout >
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 >
И в вашей основной деятельности.класс использует это:
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);