android - match_parent 不适用于自定义操作栏

标签 android

我尝试实现自定义操作栏。这是 xml:

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

这是“开发者选项”>“显示布局边界”的结果

enter image description here

最佳答案

作为@Muhannad Fakhouri 在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);

    }

关于android - match_parent 不适用于自定义操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30172439/

相关文章:

Android Activity 转换顺序

android - 如何更新 Android 中前台服务的通知文本?

android - DateUtils.getRelativeTimeSpanString() 在 Android 5 上因 NullPointerException 而失败

android - 我需要学习 java 才能构建 Android 应用程序吗?

android - 带有错误处理和进度对话框的通用 AsyncTask

c# - 如何使用 EditText 字段(纯文本)的输入在服务器上编写/创建文本文件?

android - 如何将 'Action Bar Style Generator' 与 ActionBarSherlock 一起使用?

android - 使用 Asterisk 设置 Sip 调用

java - AndroidKeystore 应用程序是特定的还是设备特定的?

java - 如何从 json 数组中检索数据并显示在 textview 中?