programing

Android 앱 Toolbar.setTitle 메서드는 아무런 효과가 없습니다 – 응용 프로그램 이름이 제목으로 표시됩니다.

topblog 2023. 8. 11. 21:27
반응형

Android 앱 Toolbar.setTitle 메서드는 아무런 효과가 없습니다 – 응용 프로그램 이름이 제목으로 표시됩니다.

안드로이드 지원 v7:21 라이브러리를 이용하여 간단한 애플리케이션을 만들려고 합니다.

코드조:
활동 파일.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>

그러나 도구 모음 %의 "내 제목" 대신 응용 프로그램 이름 %가 표시됩니다.
처럼 보입니다.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");

그리고 그것은 동작한다.

지원 작업 표시줄을 설정한 후 도구 모음을 통해 제목을 설정해야 하는 사용자는 이 문서를 참조하십시오.

지원 라이브러리의 내부 구현은 지원 작업 표시줄이 설정된 순간 도구 모음에 제목(null이 아님)이 있는지만 확인합니다.있는 경우 창 제목 대신 이 제목이 사용됩니다.그런 다음 실제 제목을 로드하는 동안 더미 제목을 설정할 수 있습니다.

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

나중에...

mActionBarToolbar.setTitle(title);

위의 답변은 전적으로 사실이지만 저에게는 맞지 않습니다.

저는 다음과 같은 것들로 저의 문제를 해결했습니다.

실제로 My 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왜냐하면 나는 특별히 사용할 필요가 없기 때문입니다.XMLMy Final 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");

이 사면용려를 사용하고 .CollapsingToolbarLayout그리고.Toolbar은 함께그당사합야니다용해신은면러합다니▁then▁together▁use▁to를 함께 사용해야 합니다.setTitle()CollapsingToolbarLayout

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

그것이 당신에게 도움이 되기를.감사해요.

단순히 다음을 사용하여 활동 이름을 변경할 수 있습니다.

Activityname.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()메서드 호출, 그러면 올바른 보기로 호출을 라우트하는 것은 ActionBar 대리인의 책임입니다.

에 대한 것만이 아닙니다..setTitle

지원 모음 v7)의 추가 (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/26506858/4548520 보다 이 솔루션을 사용하는 것을 선호합니다. 왜냐하면 제목을 여러 번 바꾸면(다른 기능으로) 사용하기가 더 편하기 때문입니다.mToolbar.setTitle()더 이상getSupportActionBar().setTitle()하나 그리고 당신은 null 예외에 대한 짜증나는 알림을 보지 못합니다.getSupportActionBar().setTitle()

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");

조각에서 도구 모음의 이름을 바꾸려고 했습니다.

도움이 됐어요. 다른 사람을 돕고 싶어요.

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

스크린샷:

응용프로그램 제목은 모든 활동에 기본 제목으로 표시되지 않으며, 모든 활동에 다른 제목을 삽입할 수 있습니다.아래의 작업 파일에서 제목을 설정하기 위해 한 줄만 붙여넣으면 됩니다.

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

여기서 제목 텍스트를 텍스트로 변경하면 됩니다.

어댑터의 주요 활동은 AppCompact Activity입니다.아무데서나 전화하세요.

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

저는 그것을 -을 사용하여 작동시켰습니다.

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

사용 중인 경우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());

당신에게 도움이 될지도 모르는 이상한 행동이 있습니다.
이것은 작동하지만 Create에만 영향을 주지 않습니다.

toolbar.setTitle("title");

작성 시 사용해 보십시오.

yourActivityName.this.setTitle("title")

이 작업은 다음을 설정하여 수행할 수 있습니다.android:label당신의 활동의 속성.AndroidManifest.xml파일:

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

그런 다음 이 줄을 onCreate()에 추가합니다.

getSupportActionBar().setDisplayShowTitleEnabled(true);

사용해 보십시오.

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);
}

도구 모음에서 정적 문자열을 설정하는 것이 목표라면 AndroidManifest.xml에서 활동 레이블을 설정하는 것이 가장 쉬운 방법입니다.

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

도구 모음은 코드 없이 이 문자열을 가져옵니다.(v27 라이브러리와 함께 사용할 수 있습니다.

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

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pizza);
    setTitle(getResources().getText(R.string.title));
}
 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       //custom toolbaar
       getSupportActionBar().setTitle("Abhijeet");

    }
}

이 특정 설정과 즉시 관련이 있는 것은 아니지만, AppBarLayout 내부의 툴바를 싸고 있던 XML에서 "Collapsing ToolbarLayout"을 제거하면 모든 것이 작동한다는 것을 알게 되었습니다.

그래서, 이것은:

      <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()가 호출되기 전에 Create의 활동 제목을 설정합니다.

다음 옵션을 추가해야 합니다.

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);

정답은 설명서(여기에서 확인할 수 있음)에 있습니다.

ActionBar 유틸리티 메서드를 사용하려면 활동의 getSupportActionBar() 메서드를 호출합니다.이 메서드는 appcompat ActionBar 개체에 대한 참조를 반환합니다.해당 참조가 있으면 작업 표시줄 메소드를 호출하여 앱 표시줄을 조정할 수 있습니다.예를 들어, 앱 모음을 숨기려면 ActionBar.hide()를 호출합니다.

그것이 당신이 실제로 찾은 해결책입니다.공식 문서에 대한 참조를 제공하는 것을 생각했습니다(분명히 소수만 읽는 경향이 있음).

Kotlin에서는 다음을 수행할 수 있습니다.

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar

class SettingsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_settings)

        val toolbar = findViewById<Toolbar>(R.id.toolbar)
        setSupportActionBar(toolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setTitle(R.string.title)

    }

    override fun onSupportNavigateUp() = true.also { onBackPressed() }

}

도구 모음과 수행 표시줄을 모두 사용하기 때문에 이러한 현상이 발생합니다.도구 모음을 수행 표시줄로 사용하려면 먼저 제공된 수행 표시줄 장식을 비활성화해야 합니다.

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

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

반응형