我正在尝试为以编程方式扩展AppCompatActivity的类设置工具栏,但该活动在运行时没有工具栏。我在使用工具栏时找到的每个教程都有创建工具栏并以XML格式添加,但我正在寻找一种更好的方法将工具栏添加到我的所有活动中,所以我试图以编程方式进行。但是,当我运行时,工具栏不可见或不添加,我找不到问题。这是我的代码:
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = new Toolbar(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, R.attr.actionBarSize);
toolbar.setLayoutParams(layoutParams);
toolbar.setPopupTheme(R.style.AppTheme);
toolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
toolbar.setTitle("This is the title");
toolbar.setVisibility(View.VISIBLE);
setSupportActionBar(toolbar);
}
}
这是我的XML文件activity_main.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
我无法弄清楚我的工具栏有什么问题。提前感谢您的帮助。
答案 0 :(得分:2)
使用Toolbar
:
Activity
添加到YOUR_LAYOUT.addView(toolbar, 0)
版面
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = new Toolbar(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 168);
toolbar.setLayoutParams(layoutParams);
toolbar.setPopupTheme(R.style.AppTheme);
toolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
toolbar.setTitle("This is the title");
toolbar.setVisibility(View.VISIBLE);
// Assuming in activity_main, you are using LinearLayout as root
LinearLayout ll = (LinearLayout) findViewById(R.id.your_linear_layout);
ll.addView(toolbar, 0);
setSupportActionBar(toolbar);
}
}
使用MainActivity
主题AppTheme.NoActionBar
来避免RuntimeException
:
此
Activity
已由窗口装饰提供action bar
。 不要请求Window.FEATURE_SUPPORT_ACTION_BAR
并设置 主题中windowActionBar
到false
代替使用Toolbar
。
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<强>输出:强>
希望这会有所帮助〜