2013-09-22 48 views
5

Để đặt thanh xoay bên phải trên thanh tác vụ, tôi phải sử dụng chế độ xem tùy chỉnh với bố cục tương đối. Nhưng sau khi tôi đặt chế độ xem tùy chỉnh trên thanh tác vụ, tôi thấy rằng tiêu đề ứng dụng biến mất, nó phải bị ảnh hưởng bằng cách đặt chế độ xem tùy chỉnh trên thanh tác vụ.Có thể hiển thị tiêu đề và chế độ xem tùy chỉnh trên thanh tác vụ cùng một lúc không?

Có thể hiển thị cả tiêu đề và chế độ xem tùy chỉnh trên thanh tác vụ không? Nếu không, tôi cũng phải đặt tiêu đề trong chế độ xem của khách hàng, nhưng tôi không muốn làm theo cách đó.

+0

Tại sao không bạn có thể tùy bạn tiêu đề tooo – Trikaldarshi

+0

Bởi vì tôi cần phải sửa đổi tiêu đề đôi khi. Nếu tôi cũng đặt tiêu đề trong chế độ xem tùy chỉnh, tôi cần thêm phương thức để xử lý thay đổi tiêu đề. – TieDad

Trả lời

4

Chế độ xem tùy chỉnh sẽ thay thế thanh Tiêu đề. Tôi khuyên bạn nên bao gồm một bản xem văn bản cho tiêu đề ứng dụng trong chế độ xem tùy chỉnh của bạn để bạn có nhiều nền tảng hơn để phát.

2

Thực ra nó không "thay thế". Điều này có thể được hiển thị bởi trình xem phân cấp. nó chỉ là nếu bạn đặt chế độ xem tùy chỉnh của mình quá lớn, nó sẽ là ON TOP của tiêu đề. Tuy nhiên, nếu bạn chỉ đặt một cái gì đó giống như một spinner, bạn có thể thiết lập nó để được căn phải và tiêu đề sẽ được hiển thị.

Dưới đây là XML Tôi sử dụng để đưa một cái nhìn hình ảnh bên phải:

<?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" /> 

và trong mã:

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

Nếu 'thanh hành động' của bạn chỉ là một cái nhìn đơn giản, giải pháp của tôi là đặt một số mã vào BaseActivity, có vẻ như:

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

Khi bạn đặt nhãn hoạt động và gọi setContentView phương thức, chế độ xem tùy chỉnh sẽ hiển thị nhãn làm tiêu đề.

PS:

TitleBar.java Mã của tôi:

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); 
    } 
} 
Các vấn đề liên quan