IT

안드로이드 앱에서 Toolbar.setTitle 메소드는 효과가 없습니다 – 어플리케이션 이름은 제목으로 표시됩니다

lottoking 2020. 3. 24. 08:16
반응형

안드로이드 앱에서 Toolbar.setTitle 메소드는 효과가 없습니다 – 어플리케이션 이름은 제목으로 표시됩니다


android-support-v7 : 21 라이브러리를 사용하여 간단한 응용 프로그램을 만들려고합니다.

코드 스 니펫 :
MainActivity.java

public class MainActivity extends ActionBarActivity {

    Toolbar mActionBarToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
        mActionBarToolbar.setTitle("My title");
        setSupportActionBar(mActionBarToolbar);
}

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar            
        android:id="@+id/toolbar_actionbar"
        android:background="@null"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:fitsSystemWindows="true" />

</LinearLayout>

그러나 툴바에 "내 제목"대신 % application name %이 (가) 표시됩니다. 방법은 효과가없는
것 같습니다 setTitle.
"제목"을 표시하고 싶습니다.

UPD : 전에는 styles.xml:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="windowActionBar">false</item>
</style>

따라서 작업 표시 줄이 사용되지 않는다고 생각했습니다. NoActionBar스타일 부모에 추가 합니다.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
</style>

그러나 문제는 해결되지 않았습니다.


해결책을 찾았습니다.

대신에:

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
mActionBarToolbar.setTitle("My title");
setSupportActionBar(mActionBarToolbar);

나는 사용했다 :

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My title");

그리고 작동합니다.


SupportActionBar를 설정 한 후 언젠가 툴바를 통해 타이틀을 설정해야하는 사람은 이 내용을 읽으십시오.

지원 라이브러리의 내부 구현은 SupportActionBar가 설정되는 순간 툴바에 제목 (널이 아님)이 있는지 확인합니다. 있다면이 제목이 창 제목 대신 사용됩니다. 그런 다음 실제 제목을로드하는 동안 더미 제목을 설정할 수 있습니다.

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("");
setSupportActionBar(mActionBarToolbar);

나중...

mActionBarToolbar.setTitle(title);

위의 답변은 완전히 사실이지만 저에게는 효과가 없습니다.

나는 다음과 같은 문제를 해결했다.

실제로 내 XML은 다음과 같습니다.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/confirm_order_mail_layout"
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/confirm_order_appbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/confirm_order_list_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|enterAlways">

            <android.support.v7.widget.Toolbar
                android:id="@+id/confirm_order_toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

나는 모든 옵션을 시도했으며 결국 CollapsingToolbarLayout그 특정 부분에서 사용할 필요가 없기 때문에 방금 제거했습니다. XML그래서 최종 XML 은 다음과 같습니다.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/confirm_order_mail_layout"
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/confirm_order_appbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/confirm_order_toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

이제 setTitle()위의 답변과 같이 사용해야합니다 .

mActionBarToolbar = (Toolbar) findViewById(R.id.confirm_order_toolbar_layout);            
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My Title");

당신이 사용하려는 경우 지금 CollapsingToolbarLayoutToolbar다음 함께 당신은 사용해야 setTitle()CollapsingToolbarLayout

CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.confirm_order_mail_layout);
collapsingToolbarLayout.setTitle("My Title");

도움이 될 수 있습니다. 감사합니다.


간단히 당신은 사용하여 모든 acitivity 이름을 변경할 수 있습니다

Acitivityname.this.setTitle("Title NAme");

이것을 시도하십시오, 당신은 XML로 직접 제목을 정의 할 수 있습니다 :

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:title="some title"
        app:popupTheme="@style/AppTheme.PopupOverlay">

각 Navbar 조각 제목의 제목을 설정하려면

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    myView = inflater.inflate(R.layout.second_layout, container, false);
    getActivity().setTitle("title");

    return myView;
}

이것을 시도하십시오 ..이 방법은 나를 위해 작동합니다 .. !! 누군가를 도울 수 있기를 바랍니다 .. !!

<android.support.v7.widget.Toolbar  
 xmlns:app="http://schemas.android.com/apk/res-auto"  
 android:id="@+id/my_awesome_toolbar"  
 android:layout_width="match_parent"  
 android:layout_height="wrap_content"  
 android:background="?attr/colorPrimary"  
 android:minHeight="?attr/actionBarSize"  
 app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >  

<TextView  
   android:id="@+id/toolbar_title"  
   android:layout_width="wrap_content"  
   android:layout_height="wrap_content"  
   android:gravity="center"  
   android:singleLine="true"  
   android:text="Toolbar Title"  
   android:textColor="@android:color/white"  
   android:textSize="18sp"  
   android:textStyle="bold" />  

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

툴바에 로고를 표시하려면 아래 스 니펫을 사용해보십시오. // 드로어 블 설정

toolbar.setLogo(ContextCompat.getDrawable(context, R.drawable.logo));

결과를 알려주세요.


 getSupportActionBar().setTitle("Your Title");

https://code.google.com/p/android/issues/detail?id=77763을 참조 하십시오 . 분명히 그것은 그렇게 작동해야합니다. 당신이 전화를하면 setSupportActionBar()메소드 호출을, 그 다음이 항공사는 액션 바 위임의 책임 올바른보기로 호출입니다.


그것은 단지 약 아니다 .setTitle

에서 지원 도구 모음 (APPCOMPAT의 V7)의 많은 방법 onCreate단지와 작품

getSupportActionBar().method()

와 함께 작동하지 않습니다 mToolbar.method()

예 :

getSupportActionBar().setTitle("toolbar title");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

다음 방법이지만없이 잘 작동 getSupportActionBar()onCreate

mToolbar.setVisibility(View.VISIBLE);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //
    }

단지에 문제가 onCreate이벤트, 당신은 여전히 사용할 수 있습니다 mToolbar.setTitle()나중에 대신 성가신의 getSupportActionBar().setTitle()당신이 추가 할 경우, 예를 들어, onCreate(이 나중에 실행되기 때문에 이후에, 그것은 작동합니다 onCreate)

mHandler.post(new Runnable() {
    @Override
    public void run() {
        mToolbar.setTitle("toolbar title");
    }
});

나는이 솔루션을 사용하는 것을 선호 https://stackoverflow.com/a/35430590/4548520 보다 https://stackoverflow.com/a/26506858/4548520을 당신이 (다른 기능에서) 제목 여러 번 변경하면 있기 때문에 사용하는 것이 더 편안 하나 mToolbar.setTitle()이상 getSupportActionBar().setTitle()이며 null 예외와 관련하여 성가신 알림이 표시되지 않습니다.getSupportActionBar().setTitle()


조각에서 툴바의 이름을 바꾸려고했습니다.

그것은 나를 도왔습니다, 나는 다른 누군가를 돕기를 희망합니다

Activity activity = this.getActivity();
Toolbar toolbar = (Toolbar) activity.findViewById(R.id.detail_toolbar);
        if (toolbar != null) {
            activity.setTitle("Title");
        }

//toolbar.setTitle("Title"); did not give the same results

스크린 샷 : 여기에 이미지 설명을 입력하십시오


MainActivity가 AppCompactActivity 인 어댑터에서 간단히 사용하십시오. 어디서나 전화하세요.

((MainActivity) context).getSupportActionBar().setTitle(titles.get(position));

나는 그것을 사용하여 작동하게했다-

toolbar.post(new Runnable() {
            @Override
            public void run() {
                toolbar.setTitle("My Title");
            }
        });

이 시도:

Xml 코드

<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:id="@+id/tool_bar"
    android:background="@color/tablayout"
    android:theme="@style/ToolBarStyle"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:layout_gravity="center"
        android:id="@+id/toolbar_title"
        android:textSize="18sp"
        android:textColor="@color/white"/>
    </android.support.v7.widget.Toolbar>

자바 코드

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    toolbar_text = (TextView)findViewById(R.id.toolbar_title);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    toolbar.setLogo(R.drawable.ic_toolbar);
}

CollapsibleToolbarLayout함께 사용하는 경우 Toolbar두 레이아웃 모두에서 제목을 설정해야합니다

onCreate메소드 에서 툴바를 작업 표시 줄로 설정

protected void setUpToolBar() {

    if (mToolbar != null) {
        ((HomeActivity) getActivity()).setSupportActionBar(mToolbar);
        mToolbar.setTitleTextColor(Color.WHITE);
        mToolbar.setTitle("List Detail");
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity()
                        .getSupportFragmentManager().popBackStack();
            }
        });
        ((HomeActivity) getActivity()).getSupportActionBar()
                .setDisplayHomeAsUpEnabled(true);
    }
}

나중에 단순히 setTitle방법을 사용하여 툴바의 제목을 업데이트하십시오.

 mToolbar .setTitle(productFromShoppingList.getProductName()); 
 mCollapsingToolbar.setTitle(productFromShoppingList.getProductName());

툴바에서 정적 문자열을 설정하는 것이 가장 쉬운 방법은 AndroidManifest.xml에서 단순히 활동 레이블을 설정하는 것입니다.

<activity android:name=".xxxxActivity"
          android:label="@string/string_id" />

툴바는 코드없이이 문자열을 가져옵니다. (v27 라이브러리에서 작동합니다.)


당신을 도울 수있는 이상한 행동이 있습니다.
이것은 작동하지만 onCreate에만 영향을 미치지 않습니다.

toolbar.setTitle("title");

onCreate에서 이것을 사용해보십시오 :

yourActivityName.this.setTitle("title")

각기 다른 활동의 제목을 변경하려면

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pizza);
    setTitle(getResources().getText(R.string.title));
}

SupportActionBar이 (@sorianiv)으로 설정 한 후 도구 모음을 통해 시간이 제목을 설정해야합니다 사람들을위한 그리고 당신의 Toolbar안에 CollapsingToolbarLayout이 읽기 :

mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
Toolbar toolbar = findViewById(R.id.toolbar);
//toolbar.setTitle(""); // no need to do this
//mToolbarLayout.setTitle("Title"); // if you need an initial title, do this instead
setSupportActionBar(toolbar);

그런 다음 나중에

mToolbarLayout.setTitle("New Title");

파일 android:label에서 활동 속성을 설정하여 수행 할 수 있습니다 AndroidManifest.xml.

<activity android:name="my activity"
 android:label="The Title I'd like to display" />

그런 다음이 줄을 onCreate ()에 추가하십시오.

getSupportActionBar().setDisplayShowTitleEnabled(true);

응용 프로그램 제목이 모든 활동에 기본 제목으로 표시되지는 않으며 모든 활동에 다른 제목을 삽입 할 수 있습니다. 활동 파일에서 onCreate는 한 줄만 붙여서 제목을 설정합니다.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("Your Title Here");

"Your Title Here"라는 텍스트를 텍스트로 변경하십시오.


이 옵션을 추가하십시오 :

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);

이 특정 설정과 즉시 관련이 없지만 AppBarLayout 내부에 툴바를 배치하고있는 XML에서 "CollapsingToolbarLayout"을 제거하면 모든 것이 작동한다는 것을 알았습니다.

그래서 이건:

      <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize"
                app:layout_scrollFlags="scroll|enterAlways"
                app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />

        </android.support.design.widget.AppBarLayout>

이 대신에 :

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/collapsingToolbar"
                android:minHeight="?attr/actionBarSize"
                app:layout_scrollFlags="enterAlways|scroll|snap">

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_height="?attr/actionBarSize"
                    app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />
            </android.support.design.widget.CollapsingToolbarLayout>

        </android.support.design.widget.AppBarLayout>

그런 다음 setSupportActionBar ()가 호출되기 전에 활동의 onCreate에 제목을 설정했습니다.


답은 설명서에 있습니다 ( 여기에서 찾을 수 있음 ).

ActionBar 유틸리티 메소드를 사용하려면 활동의 getSupportActionBar () 메소드를 호출하십시오. 이 메소드는 appcompat ActionBar 오브젝트에 대한 참조를 리턴합니다. 참조가 있으면 ActionBar 메서드를 호출하여 앱 바를 조정할 수 있습니다. 예를 들어 앱 바를 숨기려면 ActionBar.hide ()를 호출하십시오.

이것이 실제로 찾은 솔루션입니다. 공식 문서 (참조는 거의 읽지 않는 경향이 있음)에 대한 참조를 생각했습니다.


툴바와 ActionBar를 모두 사용하기 때문에 발생합니다. 툴바를 액션 바로 사용하려면 가장 먼저해야 할 일은 데코 제공 액션 바를 비활성화하는 것입니다.

가장 쉬운 방법은 테마를에서 확장하는 것 Theme.AppCompat.NoActionBar입니다.

참고 : https://stackoverflow.com/questions/26486730/in-android-app-toolbar-settitle-method-has-no-effect-application-name-is-shown

반응형