在Android中实现卫星菜单,XML文件显示找不到资源。

3
首先,我尝试使用这个库,并试图编译一个基本的测试程序:https://github.com/siyamed/android-satellite-menu 我已将项目保存到我的硬盘并导入Eclipse。我还确保它使用Java 1.6进行编译,并设置为“is library”。在Eclipse中设置了实际的库,没有任何错误。
至于我的项目,我遵循GitHub上列出的说明,但是从我的XML文件中得到了以下错误:
Multiple annotations found at this line:
    - error: No resource identifier found for attribute 'satelliteDistance' in package 'android.view.ext'
    - error: No resource identifier found for attribute 'mainImage' in package 'android.view.ext'
    - error: No resource identifier found for attribute 'closeOnClick' in package 
     'android.view.ext'
    - error: No resource identifier found for attribute 'expandDuration' in package 
     'android.view.ext'
    - error: No resource identifier found for attribute 'totalSpacingDegree' in package 'android.view.ext'

这是完整的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sat="http://schemas.android.com/apk/res/android.view.ext"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<android.view.ext.SatelliteMenu
    android:id="@+id/menu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|left" 
    android:layout_margin="8dp"
    sat:satelliteDistance="170dp"
    sat:mainImage="@drawable/ic_launcher"
    sat:totalSpacingDegree="90"
    sat:closeOnClick="true"
    sat:expandDuration="500"/>

</FrameLayout>

我的Java源文件:

package com.example.test_satellite_menu;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.ext.SatelliteMenu;
import android.view.ext.SatelliteMenuItem;

public class MainActivity extends Activity {
SatelliteMenu menu = (SatelliteMenu) findViewById(R.id.menu);
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    List<SatelliteMenuItem> items = new ArrayList<SatelliteMenuItem>();
    items.add(new SatelliteMenuItem(4, R.drawable.ic_launcher));
    items.add(new SatelliteMenuItem(4, R.drawable.ic_launcher));
    items.add(new SatelliteMenuItem(4, R.drawable.ic_launcher));
    items.add(new SatelliteMenuItem(3, R.drawable.ic_launcher));
    items.add(new SatelliteMenuItem(2, R.drawable.ic_launcher));
    items.add(new SatelliteMenuItem(1, R.drawable.ic_launcher));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
}

我已确认我的测试项目中包含卫星菜单库,我也使用了“修复项目属性”和“清除项目”的功能,但现在我想不出其他的方法了 :) 如果能提供有关使其正常工作的任何反馈意见将非常棒。谢谢!

通过阅读StackOverflow,我找到了自己的答案。必须将android.view.awt包名更改为当前项目的包名。
3个回答

2

在 StackOverflow 上阅读更多后,我找到了自己的答案。必须将 android.view.awt 包名更改为我当前项目的包名。


嘿,我在这个例子中遇到了一些问题,你能否请解释一下实现卫星菜单的步骤...谢谢。 - Nipun Gogia
如果你能够解释这些步骤,那也会帮助到其他人。 - Bunny Rabbit
我已经解释了步骤...你需要更改XML文件中列出的包名称以匹配你的包名称... - Paul Ruiz
我通过在xml中更改包来添加了卫星菜单。我将其从android.view.awt更改为com.myapp.activity。现在错误已经消失,卫星菜单也显示在图形布局中,但在设备上运行时却没有显示。请给予建议。 - Umesh

1
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:sat="http://schemas.android.com/apk/res/com.example.android.activities"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:layout_weight="0.10"
    >

    <com.example.android.activities.SatelliteMenu
        android:id="@+id/satteliteMenu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center_horizontal"
        android:layout_margin="8dp"
        sat:closeOnClick="false"
        sat:expandDuration="500"
        sat:mainImage="@drawable/ic_launcher"
        sat:satelliteDistance="130dp"
        sat:totalSpacingDegree="180" />
</FrameLayout>

编辑xmlns并在/res/后添加您的项目包名称。然后清理您的项目。


1
你晚了一年半 :) - Paul Ruiz
@PaulRuiz 迟到总比不到好。 - Anirudh

0
     SatelliteMenu menu = (SatelliteMenu) findViewById(R.id.satelliteMenu1);
     float distance = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,            170, getResources().getDisplayMetrics());
              menu.setSatelliteDistance((int) distance);
              menu.setExpandDuration(300);
              menu.setCloseItemsOnClick(true);
              menu.setTotalSpacingDegree(120);

    List<SatelliteMenuItem> items = new ArrayList<SatelliteMenuItem>();
    items.add(new SatelliteMenuItem(6, R.drawable.ic_action_search));
    items.add(new SatelliteMenuItem(5, R.drawable.ic_action_search));
    items.add(new SatelliteMenuItem(4, R.drawable.ic_action_search));
    items.add(new SatelliteMenuItem(3, R.drawable.ic_action_search));
    items.add(new SatelliteMenuItem(2, R.drawable.ic_action_search));
    items.add(new SatelliteMenuItem(1, R.drawable.ic_action_search));
    menu.addItems(items);  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接