1. 程式人生 > >Android之Toolbar的三個問題:修改左邊箭頭顏色、怎樣修改右邊以及子activity中的toolbar新增返回箭頭

Android之Toolbar的三個問題:修改左邊箭頭顏色、怎樣修改右邊以及子activity中的toolbar新增返回箭頭

1)怎樣修改左邊這個小箭頭的顏色?
2)怎樣修改右邊這三個點的顏色、怎樣把這三個點替換成我自己的圖示?

3)怎樣讓“交易清單”這4個字居中顯示?

首先設定Theme為AppCompat.NoActionBar。

(1)toolbar可以通過設定setNavigatetionIcon,傳入一個icon替換掉最左邊的小箭頭,但是需要自己實現其動作。

(2)在你自己的Theme定義中加入
<item name="actionOverflowButtonStyle">@style/OverflowButtonStyle</item>  
<style name="OverflowButtonStyle" parent="@android:style/Widget.ActionButton.Overflow">  
  
    <item name="android:src">@drawable/float_button</item>  
</style><pre><code class="language-text">就可以修改那三點了。</code> 

(3)我個人的做法是不使用setTitle,而是在toolBar的xml定義中插入一個TextView,然後設定其layout_gravity為center,它就在正中間了。 另外  那個箭頭顯示加上這句程式碼
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);  
    想要響應這個返回時間。其實就是onOptionsItemSelected()通過android.R.id.home監聽得到  
    <pre name="code" class="java"> @Override  
        public boolean onOptionsItemSelected(MenuItem item) {  
            if(item.getItemId() == android.R.id.home){  
                onBackPressed();  
            }  
            return true;  
        }  

從MainActivity中進入一個子activity中之後,如何使toolbar中左邊顯示一個返回箭頭,點選後返回到Mainactivity中呢?其實很簡單,只需要兩行程式碼.

AndroidManifest.xml中給需要在toolbar上增加返回按鈕的activity增加屬性
Android:parentActivityName=”com.example.myfirstapp.MainActivity”

    <application ... >  
        ...  
        <!-- The main/home activity (it has no parent activity) -->  
        <activity  
            android:name="com.example.myfirstapp.MainActivity" ...>  
            ...  
        </activity>  
        <!-- A child of the main activity -->  
        <activity  
            android:name="com.example.myfirstapp.DisplayMessageActivity"  
            android:label="@string/title_activity_display_message"  
            android:parentActivityName="com.example.myfirstapp.MainActivity" >  
            <!-- Parent activity meta-data to support 4.0 and lower -->  
            <meta-data  
                android:name="android.support.PARENT_ACTIVITY"  
                android:value="com.example.myfirstapp.MainActivity" />  
        </activity>  
    </application>  

然後再在程式裡新增一行程式碼就實現了
@Override  
public void onCreate(Bundle savedInstanceState) {  
    ...  
    getActionBar().setDisplayHomeAsUpEnabled(true);  
}