Androidのアクションバーに問題があります。左側と右側にいくつかのアイコンが欲しいです。左側に2つのアイコンとテキストが必要で、右側に6つのアイコンが必要ですが、テキストが非常に長い場合は、右側のいくつかのアイコンを非表示にします。標準のアクションバーでは、右から左にしかアイテムを追加できないため、独自のアクションバーを作成することにしました。どうすれば始められますか?それをするために私が知る必要があること。アドバイスや例を教えてください。
3865 次
1 に答える
6
その非常に簡単です。いくつかのレイアウトから拡張される新しいクラスを作成します。アイコンとボタンを持つxmlを膨らませます。そして、ロジックのshow \ hidden\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>
幸運を!
于 2012-10-17T12:08:25.053 に答える