如何在 Android Studio 中使用 Java 将任何视图(按钮、TextView、微调器)作为菜单项添加到 ActionBar?
How to add any View (Button, TextView, Spinner) as a menu item to ActionBar using Java in Android Studio?
我想添加任何 View,例如 Button、TextView 或 Spinner 到我的 ActionBar.
我怎样才能做到这一点?
包含任何视图的示例就足够了。
我提供了一个 ActionBar 的例子,其中包含一个 Button:
首先我们需要将menu_button.xml设计为res/layout:
<?xml version="1.0" encoding="utf-8"?>
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_background"
android:gravity="center"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:textAllCaps="false"/>
接下来,我们需要添加button_background.xml到res/drawable:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#4796F6"/>
<padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp" />
<stroke
android:width="1.5dp"
android:color="#FFFFFF" />
<corners android:radius="15dp" />
</shape>
之后,我们需要在res/menu中加上menu.xml:(在此菜单中,我们将添加我们在 menu_button.xml)
中设计的 Button
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/button"
android:title=""
app:showAsAction="always"
app:actionLayout="@layout/menu_button" />
</menu>
最后,从 java 文件 我们将得到 菜单项作为 Button 并打印一个 Toast 点击它。
MainActivity.java:
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
final MenuItem itemButton = menu.findItem(R.id.button);
button = (Button) itemButton.getActionView();
button.setText("ActionBar Button");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do your action here
Toast.makeText(MainActivity.this, "ActionBar Button was pressed!", Toast.LENGTH_LONG).show();
}
});
return true;
}
}
如果想在actionbar中添加view,可以使用toolbar,也可以在toolbar中添加view。例如;
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
// Add whatever you want
</android.support.v7.widget.Toolbar>
我想添加任何 View,例如 Button、TextView 或 Spinner 到我的 ActionBar.
我怎样才能做到这一点?
包含任何视图的示例就足够了。
我提供了一个 ActionBar 的例子,其中包含一个 Button:
首先我们需要将menu_button.xml设计为res/layout:
<?xml version="1.0" encoding="utf-8"?>
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_background"
android:gravity="center"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:textAllCaps="false"/>
接下来,我们需要添加button_background.xml到res/drawable:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#4796F6"/>
<padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp" />
<stroke
android:width="1.5dp"
android:color="#FFFFFF" />
<corners android:radius="15dp" />
</shape>
之后,我们需要在res/menu中加上menu.xml:(在此菜单中,我们将添加我们在 menu_button.xml)
中设计的 Button<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/button"
android:title=""
app:showAsAction="always"
app:actionLayout="@layout/menu_button" />
</menu>
最后,从 java 文件 我们将得到 菜单项作为 Button 并打印一个 Toast 点击它。
MainActivity.java:
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
final MenuItem itemButton = menu.findItem(R.id.button);
button = (Button) itemButton.getActionView();
button.setText("ActionBar Button");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do your action here
Toast.makeText(MainActivity.this, "ActionBar Button was pressed!", Toast.LENGTH_LONG).show();
}
});
return true;
}
}
如果想在actionbar中添加view,可以使用toolbar,也可以在toolbar中添加view。例如;
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
// Add whatever you want
</android.support.v7.widget.Toolbar>