2015-04-28 60 views
2

我在嘗試將佈局參數設置到我的工具欄時出現了奇怪的異常。
無法將LayoutParams設置爲工具欄

java.lang.ClassCastException: android.support.v7.widget.Toolbar$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 

我希望把內部視圖在工具欄的右側,但由於XML layout_gravity屬性不工作的罰款(見question)我想以編程方式做到這一點。
我的代碼如下所示:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
toolbar.setLayoutParams(new Toolbar.LayoutParams(
     ViewGroup.LayoutParams.MATCH_PARENT, 
     ViewGroup.LayoutParams.WRAP_CONTENT, 
     Gravity.CENTER | Gravity.RIGHT)); 
setSupportActionBar(toolbar); 

如果我設置的LinearLayout.LayoutParams實例作爲佈局參數,可以只工具欄dissappears。 我將不勝感激任何幫助

+0

你解決了嗎? –

回答

1

拋出異常是因爲您試圖將LayoutParams強制轉換爲它們沒有從類繼承的類,因此類轉換異常。要解決這個使用LinearLayout.LayoutParams和替代

new LinearLayout.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT, 
    ViewGroup.LayoutParams.WRAP_CONTENT, 
    Gravity.CENTER | Gravity.RIGHT)); 

// Toolbar height is 56dp as per material design guidelines 

new LinearLayout.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT, 
    56, 
    Gravity.CENTER | Gravity.RIGHT)); 
+0

我已經更新了問題 – Bolein95

+0

@ Bolein95更新了我的答案 –

+1

工具欄消失 – Bolein95

0

設置一個特定的高度:

new LinearLayout.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT, 
    80, 
    Gravity.CENTER | Gravity.RIGHT); 

或者將項目添加到您的工具欄,所以它不是空的, wrap_content實際上有東西要包裝。

+0

設置了您提供的特定高度後,工具欄消失了。我的工具欄裏實際上有一個TextView ... – Bolein95

+0

@ Bolein95你的代碼意味着你可以自己隱藏它:'getSupportActionBar()。hide();'。 – Simas

+0

抱歉,這是上市不必要的部分。然後我稍後再顯示它 – Bolein95