我必须使用Xamarin.Android中的支持库来实现工具栏吗?

时间:2019-05-07 13:31:04

标签: xamarin.android

我想在我的应用程序中实现一个工具栏,但是我不一定要支持比Oreo早的android版本。

我有一个工具栏,它显示出来,它代替了操作栏,但我不知道如何使其像操作栏一样工作并正确放置按钮。

这是我希望工具栏用于的活动的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF">

    <Toolbar
        android:minHeight="?android:attr/actionBarSize"
        android:title="Lyrics"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:titleTextColor="#DDDDDD"
        android:background="#112244"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="4dp"
        android:id="@+id/lyricsToolbar">

    </Toolbar>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:minHeight="30px"
        android:id="@+id/lyricsListView"/>
</LinearLayout>

这在.cs文件中:

var lyricsToolbar = FindViewById<Toolbar>(Resource.Id.lyricsToolbar);
SetActionBar(lyricsToolbar);

工具栏确实出现了,但是我不知道如何正确地在其上放置按钮。我发现的所有教程和代码都在appcompat支持库版本上添加了菜单。我想在右侧的工具栏上添加一个“添加歌词”按钮,而没有其他选择(这只是一个加号,如果单击它,则会打开另一个可以添加新歌词的活动)。

这是错误的方法吗? 我应该怎么做?是否应该使该应用程序向后兼容,否则我将无法正确使用工具栏?

感谢您的帮助, 谢谢

1 个答案:

答案 0 :(得分:1)

您要像跟随GIF一样实现吗?

enter image description here

如果是这样,您可以像以下布局一样直接添加此加号图标。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" 

>

 <Toolbar
    android:minHeight="?android:attr/actionBarSize"
    android:title="Lyrics"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:titleTextColor="#DDDDDD"
    android:background="#112244"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:elevation="4dp"
    android:id="@+id/lyricsToolbar">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_menu_add"
        android:layout_gravity="end"
        android:id="@+id/Toolbar_add"
    />


</Toolbar>

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="5dp"
    android:minHeight="30px"
    android:id="@+id/lyricsListView"/>

 </LinearLayout >

并设置点击事件监听器。

    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);


        var imageView =FindViewById<ImageView>(Resource.Id.Toolbar_add);
        imageView.Click += ImageView_Click;

    }

    private void ImageView_Click(object sender, System.EventArgs e)
    {
        var intent=new Intent(this, typeof(LyricsActivity));
        StartActivity(intent);
    }

如果要隐藏操作栏,请不要忘记像以下代码一样在<item name="windowNoTitle">true</item>中添加styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowNoTitle">true</item>
</style>