使用主页按钮在ActionBar上放置Button和TextView

时间:2015-11-14 19:24:35

标签: java android

我需要主页按钮和2个视图才能显示在我的ActionBar上。我的textView并不完全放在它应该放置的位置,主页按钮消失了。这是我得到的: enter image description here

这就是我需要的: enter image description here

我使用的代码:

package com.example.trythis;

import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.view.MenuItem;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public class BeginGameActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_try);

    }

     @Override
        public boolean onOptionsItemSelected(MenuItem item) 
        {
            switch (item.getItemId()) 
            {
            case android.R.id.home:
                if(NavUtils.getParentActivityName(this) != null)
                {
                    NavUtils.navigateUpFromSameTask(this);
                }
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }



     public boolean onCreateOptionsMenu(android.view.Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);

            android.app.ActionBar actionBar = getActionBar();
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
            actionBar.setDisplayShowHomeEnabled(false);
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setDisplayShowTitleEnabled(true);
            actionBar.setTitle("Назад");
            actionBar.setDisplayUseLogoEnabled(false);
            actionBar.setCustomView(R.layout.actionbar);

            return true;
        }



}

main_try.xml:

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent" 
    android:layout_height="match_parent" >
    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/main_container" 
        android:layout_centerInParent="true">


    </LinearLayout> 
 </RelativeLayout>

actionbar.xml:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="fill_horizontal"
        android:orientation="horizontal"

        >
        <TextView 

            android:layout_toRightOf="@+id/minesLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/minesLeftCounter"
            android:text="asd"      />

        <Button
            android:layout_alignParentRight="true"
            android:id="@+id/refresh_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_centerVertical="true"
            android:text="@string/refresh" />

        <TextView
            android:id="@+id/minesLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="@string/minesLeft" />

    </RelativeLayout>

我需要改变什么?任何帮助,将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

您的主页Button因以下行而消失:

actionBar.setDisplayShowHomeEnabled(false);

将参数更改为true

你的布局只需要在这里和那里进行一些集中调整。此外,当您在View上设置自定义ActionBar时,标题将不再显示,因此我们只需将另一个TextView添加到自定义View即可显示标题。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:textSize="20sp"
        android:text="Назад" />

    <TextView
        android:id="@+id/minesLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toStartOf="@+id/minesLeftCounter"
        android:layout_centerVertical="true"
        android:text="@string/minesLeft" />

    <TextView 
        android:id="@+id/minesLeftCounter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toStartOf="@+id/refresh_button"
        android:layout_centerVertical="true"
        android:text="asd" />

    <Button
        android:id="@+id/refresh_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:text="@string/refresh" />

</RelativeLayout>

答案 1 :(得分:0)

使用工具栏代替操作栏:

1-使用&#34; tool_bar.xml创建一个新的xml文件&#34;并添加以下代码:

<?xml version="1.0" encoding="utf-8"?>

>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="my Button"
    />

2 - 转到main_try.xml并添加以下代码以包含它:

<include android:id="@+id/toolbar" layout="@layout/bar"/>

3 - 在BigenGameActivity.java中将此extends Activity更改为extends AppCompatActivity

4 - 将此添加到您的onCreate方法中:

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

并且结果如下: enter image description here