2015-11-25 8 views
11

staram się osiągnąć ten (timer w toolbar z czerwonym tle):Dodaj własny pogląd na prawo od paska

A timer in the toolbar along with red background

Próbuję dodać customView w toolbar. Zawsze kończy się na skrajnym lewym rogu, tuż obok tylnej strzałki. Podobnie jak w tekście na poniższym obrazku, znajduje się niestandardowy Textview dodany do paska narzędzi. enter image description here.

Kod dla toolbar:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/base_activity_toolbar" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:minHeight="?attr/actionBarSize" 
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

Kod dodawania układ:

LayoutInflater mInflater= LayoutInflater.from(context); 
    View mCustomView = mInflater.inflate(R.layout.textview, null); 
    toolbar.addView(mCustomView); 

Jest to układ dodaję teraz do testowania:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="horizontal" 
       android:layout_width="wrap_content" 
       android:gravity="end" 
       android:layout_height="wrap_content"> 
    <TextView android:layout_width="wrap_content" 
       android:text="yp" 
       android:layout_height="wrap_content"/> 
</LinearLayout> 

I Brakuje mi czegoś poważnego, nie mogłem się zorientować. Wyciągam moje włosy.

+0

zmienić LinearLayout za 'layout_width' do' match_parent'. –

Odpowiedz

16

Możesz dodać ViewGroups wewnątrz Toolbar

  <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/toolbar_height" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <RelativeLayout.... 

      </RelativeLayout> 

      </android.support.v7.widget.Toolbar> 
+1

Kiedy jednak robię coś takiego, widzę dodany TextView, ale nie pokazuje już tytułu Toolbar. Każdy pomysł, dlaczego? – AdamMc331

+0

Podałeś 'getSupportActionBar(). SetDisplayShowTitleEnabled (false);'? lub może być "TextView" nałożony na tytuł paska narzędzi. –

+0

Tak, ponieważ "RelativeLayout" zostanie dodany po lewej stronie tytułu paska narzędzi Toolbar. Zwłaszcza jeśli dodasz 'alignParentRight =" true "', to wypchnie tytuł poza widok.Dodałem kolejną odpowiedź, aby rozwiązać ten problem, komentarz z całym tym kodem byłby zbyt długi. –

0

spróbuj. zmienić R.layout.textview do

<RelativeLayout android:layout_height="match_parent" 
       android:layout_width="match_parent" 
       > 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="TV" 
        android:id="@+id/textView2" 
        android:layout_centerVertical="true" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentEnd="true" /> 
      </RelativeLayout> 
7

danej odpowiedzi pracować, ale jeśli chcesz, aby ustawić tytuł na pasku narzędzi (najprawdopodobniej będzie), a następnie dodanie a RelativeLayout powoduje wypchnięcie tytułu z widoku z prawej strony. W takim przypadku należy wyłączyć tytuł paska narzędzi, ustawiając wartość getSupportActionBar().setDisplayShowTitleEnabled(false) i dodać niestandardowy widok tekstowy obok innego widoku, który ma zostać dodany do paska narzędzi Toolbar. więc jako przykład chcesz dodać ImageView ten sposób:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/base_activity_toolbar" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:minHeight="?attr/actionBarSize" 
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent"> 

     <TextView 
      android:id="@+id/custom_toolbar_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      style="@style/ActionBarTitle"/> 

     <ImageView 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:scaleType="centerCrop" 
      android:adjustViewBounds="true" 
      android:layout_centerVertical="true" 
      android:layout_toRightOf="@id/custom_toolbar_title" 
      android:src="@drawable/arrow"/> 

    </RelativeLayout> 

</android.support.v7.widget.Toolbar> 
+0

działa dobrze, dla tych, którzy potrzebują 'style =" @ style/ActionBarTitle "' istnieje 'style =" @ style/TextAppearance.AppCompat.Widget.ActionBar.Title "' –

2

prostu miałem ten sam problem, ale znalazłem prostszy (moim skromnym zdaniem) roztworu.

można nieco zmienić swój kod:

LayoutInflater mInflater= LayoutInflater.from(context); 
View mCustomView = mInflater.inflate(R.layout.textview, null); 
toolbar.addView(mCustomView); 

Do:

LayoutInflater mInflater= LayoutInflater.from(context); 
View mCustomView = mInflater.inflate(R.layout.textview, null); 
toolbar.addView(mCustomView, new Toolbar.LayoutParams(Gravity.RIGHT)); 

widok jest następnie dodaje ciężkości ustawiony w prawo!

5

po prostu ustawić layout_gravity do right i to działało

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="0dp" 
    android:layout_height="?android:actionBarSize" 
    app:title="NEW REQUESTS" 
    > 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="blahblah" 
     android:layout_gravity="right" 
     /> 
    </android.support.v7.widget.Toolbar> 
+0

Nie mogę w to uwierzyć, to faktycznie działało! TAK JAK. nie daje layout_gravity jako opcji dla TextView wewnątrz paska narzędzi, więc nie próbowałem go. – Anarchofascist