2013-09-22 8 views
5

アクションバーに右揃えのスピナーを配置するには、相対レイアウトのカスタムビューを使用する必要があります。しかし、私はアクションバーにカスタムビューを置くと、私はそのタイトルが消えていることがわかります、それはアクションバーにカスタムビューを置くことによって影響を受けなければなりません。アクションバーにタイトルとカスタムビューを同時に表示することはできますか?

タイトルバーとカスタムビューの両方をアクションバーに表示できますか?それ以外の場合は、顧客ビューにもタイトルを付ける必要がありますが、私はそのようにしたくありません。

+0

なぜあなたはタイトルtooo – Trikaldarshi

+0

あなたをカスタマイズすることができません。タイトルもカスタムビューに入れたら、タイトル変更を処理するメソッドを追加する必要があります。 – TieDad

答えて

4

カスタム表示がタイトルバーに置き換わります。私はあなたのカスタムビューにアプリタイトルのテキストビューを追加して、より多くのプレーの場があるようにすることをお勧めします。

2

実際には「置換」しません。これは、階層ビューアで表示できます。カスタムビューを大きすぎると設定すると、タイトルの上に表示されます。ただし、スピナーのようなものだけを置くと、右揃えに設定してタイトルを表示することができます。

<?xml version="1.0" encoding="utf-8"?> 
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="68dp" 
android:layout_height="31dp" 
android:padding="4dp" 
android:layout_gravity="center_vertical|right" 
android:layout_marginRight="4dp" 
android:onClick="onImageClicked" 
android:background="@drawable/mypic_bg" 
android:src="@drawable/logo_mypic" /> 

とコードで:ここで

は私が右の画像ビューを置くために使用されるXMLです

ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM 
      | ActionBar.DISPLAY_HOME_AS_UP 
      | ActionBar.DISPLAY_SHOW_HOME 
      | ActionBar.DISPLAY_SHOW_TITLE); 
    actionBar.setCustomView(R.layout.my_title_bar); 
0

あなたの "アクションバーは、ただ単純なビューである場合は、私の解決策がされアクティビティのラベルを設定すると

@Override 
public void setContentView(@LayoutRes int layoutResID) { 
    super.setContentView(layoutResID); 
    titleBar = (TitleBar) findViewById(R.id.title_view); 
    if (titleBar != null) { 
     titleBar.setTitle(getTitle()); 
    } 
} 

とを呼び出す:BaseActivityにいくつかのコードを入れて、それはのように思えます10の方法では、カスタムビューはラベルをタイトルとして表示します。

PS:

マイTitleBar.javaコード:私はいつかタイトルを変更する必要があるため

public class TitleBar extends FrameLayout { 

    TextView back, title, action; 

    public TitleBar(Context context) { 
     super(context); 
     init(context); 
    } 

    public TitleBar(Context context, @Nullable AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    public TitleBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     init(context); 
    } 

    private void init(Context context) { 
     setId(R.id.title_view); 
     View layout = View.inflate(context, R.layout.title_bar, null); 
     back = (TextView) layout.findViewById(R.id.back); 
     title = (TextView) layout.findViewById(R.id.title); 
     action = (TextView) layout.findViewById(R.id.action); 
     addView(layout); 
     ViewGroup.LayoutParams params = layout.getLayoutParams(); 
     setLayoutParams(params); 
    } 

    public void setTitle(CharSequence content) { 
     title.setText(content); 
    } 

    public void setTitleClickListener(View.OnClickListener listener) { 
     title.setOnClickListener(listener); 
    } 

    public void setBackClickListener(View.OnClickListener listener) { 
     back.setOnClickListener(listener); 
    } 

    public void setActionClickListener(View.OnClickListener listener) { 
     action.setOnClickListener(listener); 
    } 

    public void setActionVisiable(boolean visiable) { 
     action.setVisibility(visiable ? VISIBLE : INVISIBLE); 
    } 

    public void setBackVisiable(boolean visiable) { 
     back.setVisibility(visiable ? VISIBLE : INVISIBLE); 
    } 
} 
関連する問題