2015-05-11 2 views
4

Я пытаюсь реализовать пользовательскую панель действий. Вот XML:match_parent не работает для настраиваемой панели действий

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/action_bar"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="test "/> 
</FrameLayout> 

А вот код Java:

public class CustomActionBarActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     android.support.v7.app.ActionBar actionBar = getSupportActionBar(); 

     actionBar.setDisplayShowCustomEnabled(true); 
     actionBar.setDisplayOptions(android.support.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM); 
     actionBar.setDisplayHomeAsUpEnabled(false); 
     actionBar.setDisplayShowHomeEnabled(false); 
     actionBar.setDisplayUseLogoEnabled(false); 

     View customView = getLayoutInflater().inflate(R.layout.action_bar, null); 
     actionBar.setCustomView(customView); 
     Toolbar parent = (Toolbar) customView.getParent(); 
     parent.setContentInsetsAbsolute(0, 0); 

    } 
} 

Результат: enter image description here

Вот результат с "Параметры разработчика"> «показать макет Bounds "

enter image description here

+0

В чем проблема? – Kugelblitz

+0

Это потому, что вы надуваете «нуль» в качестве родителя –

+0

, что это должно быть @Muhannad? –

ответ

2

Как @ Муханнад Фахури в comment указал. Мне нужно было добавить параметры компоновки программно. Параметры макета будут игнорироваться, если макет раздувается без указания родителя. Вот обновленный код:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     android.support.v7.app.ActionBar actionBar = getSupportActionBar(); 

     actionBar.setDisplayShowCustomEnabled(true); 
     actionBar.setDisplayOptions(android.support.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM); 
     actionBar.setDisplayHomeAsUpEnabled(false); 
     actionBar.setDisplayShowHomeEnabled(false); 
     actionBar.setDisplayUseLogoEnabled(false); 

     View customView = getLayoutInflater().inflate(R.layout.action_bar, null); 
     customView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); 
     actionBar.setCustomView(customView); 
     Toolbar parent = (Toolbar) customView.getParent(); 
     parent.setContentInsetsAbsolute(0, 0); 

    }