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
왜냐하면 나는 특별히 사용할 필요가 없기 때문입니다.XML
My 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
'programing' 카테고리의 다른 글
PowerShell 출력을 탭 구분 형식의 텍스트 파일로 내보냅니다. (0) | 2023.08.11 |
---|---|
연속 번호 지정으로 SQL 업데이트 (0) | 2023.08.11 |
오래된 도커 이미지와 사용되지 않은 도커 이미지를 제거하는 방법 (0) | 2023.08.11 |
C# SQL Top as 매개 변수 (0) | 2023.08.11 |
기타 열을 기준으로 한 Excel 조건부 서식 (0) | 2023.08.11 |