2015-03-15 2 views
8

Вот изображение моей пользовательской панели действий:Android: Пользовательская панель действий, Как использовать всю ширину?

enter image description here

Я хочу использовать всю ширину, у меня есть поиск в Интернете для решения, но ничего не wotrked для меня.

Вот мое действие бар .xml:

<?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"> 
 

 
    <ImageView 
 
     android:layout_width="50dp" 
 
     android:layout_height="match_parent" 
 
     android:id="@+id/invActionBarSave" 
 
     android:src="@drawable/ic_ok_b" 
 
     android:nestedScrollingEnabled="true" 
 
     android:layout_alignParentRight="true" 
 
     android:background="#ffb0afaf" 
 
     android:paddingLeft="8dp" 
 
     android:paddingRight="8dp" 
 
     android:layout_marginTop="4dp" 
 
     android:layout_marginBottom="4dp" /> 
 

 
    <ImageView 
 
     android:layout_width="50dp" 
 
     android:layout_height="match_parent" 
 
     android:id="@+id/invActionBarDelete" 
 
     android:src="@drawable/ic_trash" 
 
     android:nestedScrollingEnabled="true" 
 
     android:layout_toLeftOf="@+id/invActionBarSave" 
 
     android:layout_marginRight="5dp" 
 
     android:background="#ffb0afaf" 
 
     android:paddingLeft="8dp" 
 
     android:paddingRight="8dp" 
 
     android:layout_marginTop="4dp" 
 
     android:layout_marginBottom="4dp" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="match_parent" 
 
     android:singleLine="true" 
 
     android:text="אלסאדק אחמד אבו האני" 
 
     android:textSize="18dp" 
 
     android:textColor="#ff000000" 
 
     android:id="@+id/invActionBarTitle" 
 
     android:gravity="center|right" 
 
     android:layout_toLeftOf="@+id/invActionBarDelete" 
 
     android:layout_toRightOf="@+id/invActionBarHome" 
 
     android:layout_marginRight="20dp" 
 
     android:layout_marginLeft="10dp" /> 
 

 
    <ImageView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="match_parent" 
 
     android:id="@+id/invActionBarHome" 
 
     android:src="@drawable/ic_back_b" 
 
     android:nestedScrollingEnabled="true" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_alignParentRight="false" 
 
     android:paddingLeft="10dp" /> 
 

 
    <ProgressBar 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:indeterminateOnly="false" 
 
     style="@style/ProgressBar.Horizontal" 
 
     android:indeterminate="true" 
 
     android:id="@+id/invActionBarProgressBar" 
 
     android:visibility="gone" 
 
     android:layout_below="@+id/invActionBarDelete" 
 
     android:paddingLeft="10dp" /> 
 

 
</RelativeLayout>

А вот мой Java-код:

getSupportActionBar().setDisplayShowHomeEnabled(false); 
    getSupportActionBar().setDisplayShowTitleEnabled(false); 
    LayoutInflater mInflater = LayoutInflater.from(this); 
    //View mCustomView = mInflater.inflate(R.layout.actionbar_invoice, null); 
    getSupportActionBar().setCustomView(R.layout.actionbar_invoice); 
    getSupportActionBar().setDisplayShowCustomEnabled(true); 
    setContentView(R.layout.cstmrinvoice); 
    getWindow(). 
      getDecorView(). 
      setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

[EDIT]

Вот простой на е:

enter image description here

А вот .xml:

<?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" 
 
    android:contentInsetEnd="0dp" 
 
    android:contentInsetStart="0dp"> 
 

 
    <TextView 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="Small Text" 
 
     android:id="@+id/textView6" 
 
     android:background="#ffff0000" 
 
     android:textColor="#ffffffff" /> 
 
</RelativeLayout>

Тот же результат, есть еще пространство справа от панели действий!

Спасибо

ответ

20

Прочитайте эту link1, link2 и установите contentInsets в 0dp, как сделано ниже:

View mCustomView = mInflater.inflate(R.layout.actionbar_invoice, null); 
getSupportActionBar().setCustomView(mCustomView); 
Toolbar toolbar=(Toolbar)mCustomView.getParent(); 
toolbar.setContentInsetsAbsolute(0,0); 

Если вы являетесь пользователем ng вместо ActionBar, используйте нижеприведенный код:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:minHeight="@dimen/action_bar_height" 
    android:background="?attr/colorPrimary" 
    android:contentInsetStart="0dp"//see this 
    android:contentInsetLeft="0dp"//see this 
    app:contentInsetLeft="0dp" 
    app:contentInsetStart="0dp" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

Надеюсь, это может вам помочь.

+1

BOOOOOM, thaaaaank вы очень барахло, он работает !! :-) Я очень ценю вашу помощь, еще раз спасибо – user2005049

+0

где я должен положить эту панель инструментов, чтобы она помещала тени на мои предметы ?! – Kenji

+0

Эй @ Амрут Бидри! Я столкнулся с той же проблемой на Android M и, похоже, что workaroung с «setContentInsetsAbsolute (0, 0)» работает только с Lolipop, но теперь он работает на Android M :(Знаете ли вы что-нибудь об этом? – Samik

0

Я решил эту проблему с помощью панели инструментов и добавить следующие свойства этого.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" > 

<View 
    android:id="@+id/toolbar_blurrbg" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@drawable/toolbar_bg" 
    android:visibility="gone" /> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@drawable/actionbar_bg" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp" /> 

приложение: contentInsetEnd и приложение: contentInsetStart ..

Смотрите, если это помогает вам

+0

Я пробовал, но безуспешно. – user2005049

6

Следуйте нескольким простым шагам. 1. Сделайте свой собственный вид пользовательских действий action_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
android:weightSum="3"> 

<TextView 
    android:id="@+id/bar_title1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textColor="@color/White" 
    android:text="title1"/> 
<TextView 
    android:id="@+id/bar_title2" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textColor="@color/White" 
    android:text="title2"/> 
<TextView 
    android:id="@+id/bar_title3" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textColor="@color/White" 
    android:text="title3"/> 
    </LinearLayout> 

Вот код:

final ActionBar actionBar = getActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.custom_action_bar, null); 
actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

Это, безусловно, решить вашу цель. Счастливое кодирование !!!

+0

Вы прибили его. Спасибо :) actionBar.setDisplayOptions (ActionBar.DISPLAY_SHOW_CUSTOM); Этот фрагмент кода сделал трюк –

+0

Я потратил пару часов, чтобы попробовать этот ... actionBar.setDisplayOptions (ActionBar.DISPLAY_SHOW_CUSTOM). Спасибо чувак! – wtk

2
ActionBar action = getSupportActionBar(); 
     action.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

Toolbar toolbar=(Toolbar)action.getCustomView().getParent(); 
     toolbar.setContentInsetsAbsolute(0, 0); 
     toolbar.getContentInsetEnd(); 
     toolbar.setPadding(0, 0, 0, 0); 
+0

toolbar.setPadding (0, 0, 0, 0); работал на меня. спасибо – VicJordan

+0

thats работает спасибо –

Смежные вопросы