2012-10-17 3 views
3

안드로이드에 액션 바에 문제가 있습니다. 나는 왼쪽과 오른쪽에 몇 가지 아이콘을 갖고 싶다. 왼쪽에는 2 개의 아이콘과 텍스트가 있고 오른쪽에는 6 개의 아이콘이 있고 싶지만 텍스트가 매우 길면 오른쪽에 일부 아이콘을 숨기고 싶습니다. 표준 작업 표시 줄에서는 항목을 오른쪽에서 왼쪽으로 만 추가 할 수 있으므로 자신의 작업 표시 줄을 만드는 것으로 결정했습니다. 어떻게 시작할 수 있습니까? 그 일을하기 위해 내가 알아야 할 것. 조언이나 예를 들어 주시겠습니까?안드로이드에 자신 만의 액션 바 생성

답변

6

매우 간단합니다. 일부 레이아웃에서 확장 될 새 클래스를 만듭니다. Inflate xml에는 아이콘과 버튼이 있습니다. 그리고 논리 show \ hide \ set 리스너에 대한 메소드를 작성하십시오. 나는 그것을 일찍했지만 지금은 그렇게 좋지 않다고 말할 수 있습니다. 응용 프로그램을 제작하기 위해서는 지침이 있어야하며 매우 중요합니다. 내 옛날 프로젝트

예 :

public class ActionBar extends RelativeLayout { 
    private ToggleButton buttonSave; 
    private ToggleButton buttonClear; 
    private ToggleButton buttonHelp; 
    private ToggleButton buttonBack; 
    private FrameLayout sepparator; 
    private TextView textview; 
    private ImageView imageViewIcon; 


    public ActionBar(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     layoutInflater.inflate(R.layout.actionbar, this); 

     initView(); 
    } 

    private void initView() { 
     buttonSave = (ToggleButton) findViewById(R.id.actionbar_togglebutton_save); 
     buttonBack = (ToggleButton) findViewById(R.id.actionbar_togglebutton_back); 
     buttonHelp = (ToggleButton) findViewById(R.id.actionbar_togglebutton_help); 
     textview = (TextView) findViewById(R.id.actionbar_textview); 
     imageViewIcon = (ImageView) findViewById(R.id.actionbar_imageview_icon); 
     buttonClear = (ToggleButton) findViewById(R.id.actionbar_togglebutton_clear); 
     sepparator = (FrameLayout) findViewById(R.id.actionbar_sepparator); 
    } 

    public void setOnSaveButtonClickListener (OnClickListener listener) { 
     buttonSave.setOnClickListener(listener); 
    } 

    public void setSaveButtonDrawable (Drawable d) { 
     buttonSave.setBackgroundDrawable(d); 
     buttonSave.setVisibility(View.VISIBLE); 
    } 

    public void setOnHelpButtonClickListener (OnClickListener listener) { 
     buttonHelp.setOnClickListener(listener); 
    } 
    public void setHelpButtonDrawable (Drawable d) { 
     buttonHelp.setBackgroundDrawable(d); 
     buttonHelp.setVisibility(View.VISIBLE); 
    } 

    public void setOnBackButtonClickListener (OnClickListener listener) { 
     buttonBack.setOnClickListener(listener); 
    } 

    public void setBackButtonDrawable (Drawable d) { 
     buttonBack.setBackgroundDrawable(d); 
     buttonBack.setVisibility(View.VISIBLE); 
    } 

    public void setClearButtonDrawable (Drawable d) { 
     buttonClear.setBackgroundDrawable(d); 
     buttonClear.setVisibility(View.VISIBLE); 
    } 

    public void setOnClearButtonClickListener (OnClickListener listener) { 
     buttonClear.setOnClickListener(listener); 
    } 

    public void setTitle (String value) { 
     textview.setText(value); 
    } 

    public void setIcon (int resId) { 
     imageViewIcon.setImageDrawable(getResources().getDrawable(resId)); 
    } 

    public void setOnIconClickListener (OnClickListener listener) { 
     imageViewIcon.setOnClickListener(listener); 
    } 

    public void setSaveButtonChecked (boolean value) { 
     buttonSave.setChecked(value); 
    } 

    public void setSeporatorVisible (int visibility) { 
     sepparator.setVisibility(visibility); 
    } 

    public void setOnIconListener (OnClickListener listener) { 
     imageViewIcon.setOnClickListener(listener); 
    } 
} 

XML :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="60dp" 
    android:background="@drawable/avtion_bar_bg" > 


    <ToggleButton 
     android:id="@+id/actionbar_togglebutton_back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:visibility="gone" 
     android:background="@drawable/arrow_back_button_drawable" 
     android:textOn="" 
     android:textOff="" /> 

    <ImageView 
     android:id="@+id/actionbar_imageview_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@id/actionbar_togglebutton_back" 
     android:layout_marginLeft="19.1dp"/> 

    <TextView 
     android:id="@+id/actionbar_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:textColor="@color/actionbar_text" 
     android:textSize="16dp" 
     android:layout_toRightOf="@id/actionbar_imageview_icon" 
     android:layout_marginLeft="56.1dp" /> 

    <RelativeLayout 
     android:id="@+id/actionbar_relativelayout_saveconteiner" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true"> 

     <ToggleButton 
      android:id="@+id/actionbar_togglebutton_save" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:visibility="gone" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:background="@drawable/save_btn_drawable" 
      android:textOn="" 
      android:textOff=""/> 

     <FrameLayout 
      android:id="@+id/actionbar_sepparator" 
      android:layout_width="0.5dp" 
      android:background="@color/white25transpert" 
      android:layout_toLeftOf="@id/actionbar_togglebutton_save" 
      android:layout_height="35dp" 
      android:layout_centerInParent="true">  
     </FrameLayout> 

     <ToggleButton 
      android:id="@+id/actionbar_togglebutton_clear" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:visibility="gone" 
      android:layout_toLeftOf="@id/actionbar_sepparator" 
      android:layout_marginRight="4dp" 
      android:layout_centerVertical="true" 
      android:background="@drawable/clear_button_drawable" 
      android:textOn="" 
      android:textOff=""/> 

    </RelativeLayout> 

    <ToggleButton 
     android:id="@+id/actionbar_togglebutton_help" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="gone" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:background="@drawable/save_btn_drawable" 
     android:layout_marginRight="10dp" 
     android:textOn="" 
     android:textOff=""/> 

</RelativeLayout> 

행운을 빕니다!