development

ActionBar 안에 아이콘과 작업 제목을 모두 표시하는 방법은 무엇입니까?

big-blog 2020. 10. 16. 07:35
반응형

ActionBar 안에 아이콘과 작업 제목을 모두 표시하는 방법은 무엇입니까?


내부에 icontitle작업을 모두 표시해야합니다 ActionBar.

" withText"옵션을 시도했지만 효과가 없습니다.

여기에 이미지 설명 입력


' always | withText '는 충분한 공간이 있으면 작동하고, 그렇지 않으면 아이콘 만 배치합니다. 회전으로 휴대폰에서 테스트 할 수 있습니다.

<item android:id="@id/menu_item"
android:title="text"
android:icon="@drawable/drawable_resource_name"
android:showAsAction="always|withText" />

다음 두 가지 방법으로 텍스트로 작업을 만들 수 있습니다.

1- XML에서 :

<item android:id="@id/resource_name"
      android:title="text"
      android:icon="@drawable/drawable_resource_name"
      android:showAsAction="withText" />

메뉴를 부 풀릴 때를 getSupportMenuInflater()사용하고 있으므로 호출해야합니다 ActionBarSherlock.

2- 프로그래밍 방식 :

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT);
    item.setIcon(R.drawable.drawable_resource_name);
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return true;
}

반드시 가져 확인 com.actionbarsherlock.view.Menu하고 com.actionbarsherlock.view.MenuItem.


나를 위해 일한 것은 ' always | withText '를 사용하는 것이 었습니다 . 메뉴가 많은 경우 '항상'대신 'ifRoom'을 사용하는 것이 좋습니다.

<item android:id="@id/resource_name"
android:title="text"
android:icon="@drawable/drawable_resource_name"
android:showAsAction="always|withText" />

내가 찾은 해결책은 사용자 지정 작업 레이아웃을 사용하는 것입니다. 여기에 메뉴 용 XML이 있습니다.

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Eventapp="http://schemas.android.com/apk/res-auto">
<!-- This is a comment. -->
    <item
        android:id="@+id/action_create"
        android:actionLayout="@layout/action_view_details_layout"
        android:orderInCategory="50"
        android:showAsAction = "always"/>
</menu>

레이아웃은

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:gravity="center"
    android:text="@string/create"/>

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:gravity="center"
    android:src="@drawable/ic_action_v"/>

</LinearLayout>

아이콘과 텍스트가 함께 표시됩니다.

clickitem을 가져 오려면 조각 또는 활동 :

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    //super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu_details_fragment, menu);
    View view = menu.findItem(R.id.action_create).getActionView();
    view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
        }
    });
}

2017의 any1이 프로그래밍 방식으로이 작업을 수행하는 방법을 궁금해하는 경우 답변에서 볼 수없는 방법이 있습니다.

.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

툴바에 버튼을 추가 할 수 있습니다.

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

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginRight="16dp"
            android:background="@color/transparent"
            android:drawableRight="@drawable/ic_your_icon"
            android:drawableTint="@drawable/btn_selector"
            android:text="@string/sort_by_credit"
            android:textColor="@drawable/btn_selector"
            />

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

드로어 블에 btn_selector.xml 파일 생성

<?xml version="1.0" encoding="utf-8" ?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:state_selected="true"
    android:color="@color/white"
    />
<item
    android:color="@color/white_30_opacity"
    />

자바:

개인 부울 isSelect = false;

버튼에 대한 OnClickListener :

private void myClick() {
    if (!isSelect) {
       //**your code**//
        isSelect = true;
    } else {//**your code**//
        isSelect = false;
    }
    sort.setSelected(isSelect);
}

여러분 중 일부는 훌륭한 답변을 가지고 있지만 몇 가지 추가 사항을 찾았습니다. 프로그래밍 방식으로 일부 하위 메뉴가있는 MenuItem을 만들려면 다음을 수행하십시오.

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        SubMenu subMenu = menu.addSubMenu(0, Menu.NONE, 0, "Menu title");
        subMenu.getItem().setIcon(R.drawable.ic_action_child);
        subMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

        subMenu.add(0, Menu.NONE, 0, "Subitem 1");
        subMenu.add(0, Menu.NONE, 1, "Subitem 2");
        subMenu.add(0, Menu.NONE, 2, "Subitem 3");

        return true;
    }

먼저 메뉴 막대에 TextView를 추가하고 setCompoundDrawables()원하는쪽에 이미지를 배치하는 데 사용 하십시오. 마지막에 클릭 활동을 textview에 결합합니다.

MenuItem item = menu.add(Menu.NONE, R.id.menu_item_save, 10, R.string.save);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
TextView textBtn = getTextButton(btn_title, btn_image);
item.setActionView(textBtn);
textBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
           // your selector here   }
    });

여기에서 말 그대로 모든 것을 사용자 정의 할 수 있습니다.

public TextView getTextButton (String btn_title, Drawable btn_image) {
    TextView textBtn = new TextView(this);
    textBtn.setText(btn_title);
    textBtn.setTextColor(Color.WHITE);
    textBtn.setTextSize(18);
    textBtn.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD));
    textBtn.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
    Drawable img = btn_image;
    img.setBounds(0, 0, 30, 30);
    textBtn.setCompoundDrawables(null, null, img, null); 
    // left,top,right,bottom. In this case icon is right to the text

    return textBtn;
}

app : showAsAction = "always | withText"사용. Android 4.1.1을 사용하고 있지만 어쨌든 적용 할 수 있습니다. 내 모습은 아래와 같습니다.

<item
        android:id="@+id/action_sent_current_data"
        android:icon="@drawable/ic_upload_cloud"
        android:orderInCategory="100"
        android:title="@string/action_sent_current_data"
        app:showAsAction="always|withText"/>

다음과 같이하세요:

  1. Java 코드에 Action Bar 인스턴스 추가 final ActionBar actionBar = getActionBar();
  2. 홈 디스플레이 옵션 활성화 actionBar.setDisplayShowHomeEnabled(false);
  3. 각 활동의 매니페스트 파일에 다음 코드를 추가합니다. android:logo=@drawable/logo and android:label="@string/actionbar_text"

나는 이것이 당신을 도울 것이라고 생각합니다

참고 URL : https://stackoverflow.com/questions/12000562/how-to-display-both-icon-and-title-of-action-inside-actionbar

반응형