툴바 탐색 아이콘이 설정되지 않음
새로운 툴바 구성 요소를 사용하고 있으며 탐색 아이콘에 문제가 있습니다. 뒤로 탐색을위한 사용자 지정 아이콘을 구현하고 싶습니다.
내 매니페스트에서 부모를 내 활동에 설정했습니다.
<activity android:name=".CardsActivity" android:parentActivityName=".MainActivity">
<!-- Parent activity meta-data to support API level 7+ -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
다음과 같이 툴바를 선언합니다.
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.lollitest.MainActivity" >
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:layout_marginBottom="10dp"
android:background="?attr/colorPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/my_awesome_toolbar"
android:text="@string/hello_world" />
</RelativeLayout>
그런 다음 내 활동에서 다음과 같이 툴바를 구성합니다.
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_good);
toolbar.setTitle("Title");
toolbar.setSubtitle("Sub");
toolbar.setLogo(R.drawable.ic_launcher);
setSupportActionBar(toolbar);
나에게주는 :
뒤로 아이콘 은 내가 설정 한 아이콘 이 아닙니다setNavigationIcon()
! 내가 메소드에 제공하는 드로어 블이 무엇이든 탐색 아이콘은 항상 뒤로 화살표입니다.
매니페스트에서 부모 연결을 제거하려고 시도했지만 유일한 효과는 버튼이 돌아가는 것을 방지하는 것입니다.
반대로 기본 뒤로 화살표 아이콘을 원하고 전화 setNavigationIcon()
하지 않으면 아이콘이 전혀 없습니다.
도구 모음 (사용자 정의 및 기본값)에서 탐색 아이콘을 처리하는 올바른 방법은 무엇입니까?
참고 : Android 4.4에서 테스트를 실행하고 있습니다.
현재 당신은 그것을 사용할 수 있습니다, 순서를 변경 : (버그 인 것 같습니다)
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_good);
toolbar.setTitle("Title");
toolbar.setSubtitle("Sub");
toolbar.setLogo(R.drawable.ic_launcher);
탐색 아이콘에만 해당되며 올바른 순서입니다.
// get the actionbar as Toolbar and set it up
Toolbar toolbar = (Toolbar) findViewById(R.id.signIn_toolbar);
setSupportActionBar(toolbar);
뒤로 탐색을 제공하도록 툴바에 알립니다. 이렇게하면 아이콘이 기본 재질 아이콘으로 설정됩니다.
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
나중에 아이콘을 사용자 지정 아이콘으로 재정의합니다. 제 경우에는 Holo 뒤로 아이콘
toolbar.setNavigationIcon(R.drawable.ic_chevron_left_white_36dp);
(user802421에 대한 답변)
private void setToolbar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_action_back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
}
toolbar.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
android:background="?attr/colorPrimaryDark" />
방금 해결책을 찾았습니다. 정말 간단합니다.
mDrawerToggle.setDrawerIndicatorEnabled(false);
도움이되기를 바랍니다.
setNavigationIcon을 사용하여 변경하십시오. 먼저 ActionBarDrawerToggle을 만드는 것을 잊지 마십시오!
나를 위해 작동하는 샘플 코드 :
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
toolbar.setNavigationIcon(R.drawable.ic_menu);
I had simillar problem. After a big headache I found, that my ActionBarDrawerToggle was modifying the icon, also when it should not modify the icon (because I didn't give reference to toolbar to the toggle component). So in my NavigationDrawerFragment class (that handles the opening and closing) in setUp(...)
method I set
mDrawerToggle.setHomeAsUpIndicator(R.drawable.app_icon);
and finally it worked.
I tried to set up toolbar like @Gabriele Mariotti, but I had some problem with title. So then I set order to
toolbar.setTitle("Title")
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_good);
and it works.
I used the method below which really is a conundrum of all the ones above. I also found that onOptionsItemSelected is never activated.
mDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
if (toolbar != null) {
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
You can use invalidate()
method to change toolbar state in any place. Example:
Toolbar toolbar = (Toolbar)findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.mipmap.arrow_white);
toolbar.invalidate(); // restore toolbar
Remove this line from activity if you have added
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Then set icon
getSupportActionBar().setHomeAsUpIndicator(icon);
Try this:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:toolbar="http://schemas.android.com/apk/res-auto"
android:id="@+id/tool_drawer"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
toolbar:navigationIcon="@drawable/ic_navigation">
</android.support.v7.widget.Toolbar>
work for me...
<android.support.v7.widget.Toolbar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/toolBar"
android:background="@color/colorGreen"
app:title="Title"
app:titleTextColor="@color/colorBlack"
app:navigationIcon="@drawable/ic_action_back"/>
도구 모음을 작업 표시 줄로 설정하지 않으려면 다음을 사용할 수 있습니다.
val toggle = ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
toggle.isDrawerSlideAnimationEnabled = false
toggle.isDrawerIndicatorEnabled = false
toggle.setHomeAsUpIndicator(AppCompatResources.getDrawable(this, ...))
drawer!!.addDrawerListener(toggle)
toggle.setToolbarNavigationClickListener {
setDrawerOpened(!isDrawerOpened())
}
toggle.syncState()
fun setDrawerOpened(open: Boolean) {
if (open == drawerLayout.isDrawerOpen(GravityCompat.START))
return
if (open)
drawerLayout.openDrawer(GravityCompat.START)
else drawerLayout.closeDrawer(GravityCompat.START)
}
참고 URL : https://stackoverflow.com/questions/26525229/toolbar-navigation-icon-never-set
'Program Tip' 카테고리의 다른 글
Objective-C 객체 배열에서 쉼표로 구분 된 문자열을 만드는 가장 간단한 방법 (0) | 2020.11.19 |
---|---|
폴더의 여러 파일 이름 변경, 접두사 추가 (Windows) (0) | 2020.11.19 |
Docker : "매니페스트 목록 항목에 windows / amd64와 일치하는 매니페스트가 없습니다" (0) | 2020.11.19 |
iPhone에서 TableView 구분 기호를 사용자 지정하는 방법 (0) | 2020.11.19 |
StreamReader를 처음으로 반환 (0) | 2020.11.19 |