Android:应用程序图标为向上按钮不起作用

时间:2015-01-02 18:16:38

标签: android button menu icons

iam遵循Android开发者网站上的基本初学者教程。现在,我将介绍如何将应用程序图标作为向上按钮(参见上一篇文章):http://developer.android.com/training/basics/actionbar/adding-buttons.html#UpNav

我把“getSupportActionBar()。setDisplayHomeAsUpEnabled(true);”在我的活动onCreate()方法,但在我的设备上我的应用程序没有应用程序图标作为按钮。这是我的活动

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

public class DisplayMessageActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // Get the message from the intent
    Intent intent = this.getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);
}

还有我的清单

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.andreas.myapplication.MainActivity" />
    </activity>
</application>

Gradle Infos

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.example.andreas.myapplication"
    minSdkVersion 8
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
我很困惑,因为我已经使用了正确的方法来实现minSdkVersion 8。

有谁知道,为什么ma App不会将Icon显示为Up-Button?

最好的问候

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题 - 启用“将主页显示为向上”导致向上按钮上显示箭头图像。我已设法使用应用程序图标替换箭头,步骤如下:

  • 使用ImageAsset中的应用图标图片创建新的/drawable
  • OnCreate()子活动中,添加2行:

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);                    
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_home);
    

答案 1 :(得分:3)

android:value =“替换元数据值 android:value =”com.example.andreas.myapplication.MainActivity“

要支持具有支持库的旧设备,还要包含一个元素,该元素将父活动指定为android.support.PARENT_ACTIVITY的值,如下所示:

<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
     android:name="android.support.PARENT_ACTIVITY"
     android:value=".MainActivity" />

A full explanation is here: http://programmerguru.com/android-tutorial/how-to-add-up-button-on-action-bar/

答案 2 :(得分:0)

我认为您需要在第二项活动中致电getSupportActionBar().setDisplayHomeAsUpEnabled(true);后致电setContentView(textView);

修改

另外,主要活动不应该调用getSupportActionBar().setDisplayHomeAsUpEnabled(true);,因为它无处可去。您应该添加一个按钮来切换活动,否则您将无法访问DisplayMessageActivity。尝试这样的事情:

Intent showmessg = new Intent(getApplicationContext(), DisplayMessageActivity.class);
startActivity(showmessg);

希望它适合你。

来源:http://developer.android.com/training/basics/actionbar/adding-buttons.html#UpNav

答案 3 :(得分:0)

我认为在android 5和API 21中我们无法使用app图标进行操作 如果您的appcompat支持库是v7 rev21,我认为您至少不能使用应用程序图标来执行操作。但你可以使用它而不是左上角的插入符号,或者你可以使用该插入符号的右侧的应用程序图标,但如果你点击它没有任何事情发生。

我有两个应用程序完全像我在其中一个培训中使用较旧的appcompat v7和minSdkVersion =“11”并且我从未添加getSupportActionBar().setDisplayHomeAsUpEnabled(true);
它但应用程序有应用程序图标,没有问题。但在另一个应用程序我几天前更新我的支持库到rev21,当然这个应用程序的minSdkVersion是“8”但这个应用程序没有actionBar图标为Up动作,如果你添加顶级代码,你什么都不做。 我搜索了很多网站,据我所知,在材料设计方面谷歌删除了应用程序图标,因为行动栏上的空间增加等等。 您可以在this page中看到此行。

  

“使用Material主题时(默认情况下在API 21或更新版本中)   导航按钮(以前称为“Home”)先前占据了空间   由应用程序图标占用。希望表达更强大的应用   品牌应该在动作栏中大量使用他们的品牌颜色   其他应用程序chrome或使用替代他们的标准标题   文本“。