我正在启动一个Honeycomb应用程序,该应用程序将具有基本的两个面板布局,左侧的一个面板用于菜单,另一个面板用于每个部分的主要功能.
与Fragments API的可用示例相反,右侧面板上显示的内容包含每个菜单选项的完全不同的UI.
根据所选部分替换正确的片段很有诱惑力,但这意味着在整个应用中只使用一个活动,这听起来不太好.此外,片段的生命周期与活动相关联,因此在活动被杀死之前不会杀死任何碎片,导致大量碎片"活着".
但是,对于每个菜单选项,具有两个面板的不同活动意味着必须在每个活动中添加用于菜单的片段,并且在应该具有菜单的所有部分中将存在不一致的布局.
这里的最佳做法是什么?
我试图用片段重现Honeycomb GMail UI而不能.这就是我想要的
初始状态:
+--------+---------------+
| | |
|Accounts| Folders |
| | |
+--------+---------------+
Run Code Online (Sandbox Code Playgroud)
选择文件夹后:
+--------+---------------+
| | |
|Folders | Items |
| | |
+--------+---------------+
Run Code Online (Sandbox Code Playgroud)
其中帐户,文件夹和项目是片段.(显然后退按钮应该进入初始状态)
我尝试了以下布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/root">
<FrameLayout
android:id="@+id/left_pane" android:layout_weight="1"
android:layout_width="0px" android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/right_pane" android:layout_weight="1.6"
android:layout_width="0px" android:layout_height="match_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,因为我无法将我的文件夹片段从右窗格移动到左窗格(片段只能添加一次).我可以创建新的文件夹,但这是非常浪费资源,需要仔细的状态管理(特别是当按下后退按钮时)并且看起来不像我想要的样子.
我尝试使用3个FrameLayouts(左,中,右,权重1,1.6,2.56),但是当不显示片段时,我无法使FrameLayout崩溃.任何帮助都非常感谢
我已经创建了一个适用于Honeycomb的AppWidget,它运行良好,除了首次安装时,它不会显示在Widgets菜单中,因此无法添加到主屏幕.重新启动设备将允许它显示,或者在开发期间,从Eclipse发送两次将导致它显示.
有任何想法吗?
谢谢!
我试图在操作栏上使用不同的"homeAsUpIndicator"图形,并且我遇到了屏幕边缘和图形的一些边缘问题.
在项目的styles.xml中使用值为@ drawable/my_graphic的"android:homeAsUpIndicator"属性,我设法将指标更改为自定义图形.该图形的设计考虑了0dp的左边距 - 因为在图形的左边缘应该一直到屏幕的左边缘.相反,我在图像的顶部和左侧都获得了6像素的边距.
我已尝试在styles.xml中设置边距和填充,但要么不起作用,要么我已将它应用于错误的资源.此外,我尝试将操作栏背景设置为9补丁图形,并让标准指示器图形(Honeycomb 3.1中的"<")浮动在它上面......这也不起作用,因为它只是按下指示器背景固定像素右侧的图形.它仅覆盖了9补丁中被识别为拉伸像素的像素.
有没有办法从操作栏中删除6像素填充/边距,以便指示图形与屏幕左侧齐平?任何例子或线索将不胜感激!
谢谢
我用android开发应用程序:minSdkVersion ="11".据我所知,ViewPager是在兼容性库中实现的.我已成功通过添加android-support-v4.jar库使其在我的应用程序中工作,但现在我不得不使用
android.support.v4.app.FragmentActivity
因为我需要用于FragmentPagerAdapter的getSupportFragmentManager(),而不是新的android.app.Activity的getFragmentManager().
我也需要使用
android.support.v4.app.Fragment
代替
android.app.Fragment
它虽然有效,但我绝对不喜欢这种方法.它破坏了应用程序的设计,我不想在我的API Level 11项目中拥有兼容性库.
还有其他更原生的方法可以在Honeycomb +应用程序中使用ViewPager吗?
我有以下LinearLayout
用GridView
它:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<GridView
android:id="@+id/songs_grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:columnWidth="250dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
该GridView
数据由一个定制适配器(使用简单的提供ViewHolder
):
public class SongsAdapter extends BaseAdapter {
private Context context;
private LayoutInflater mInflater;
private ArrayList<Song> songList;
public SongsAdapter(Context context, ArrayList<Song> songList)
{
this.context = context;
this.songList = songList;
mInflater = LayoutInflater.from(this.context);
}
@Override
public int getCount()
{
return songList.size();
}
public Object getItem(int position)
{
return songList.get(position);
}
public long getItemId(int position)
{ …
Run Code Online (Sandbox Code Playgroud) 我需要在某些事件上开始活动(比如通知点击,但它可以是任何其他事件,甚至是来自broadcastReceiver),如果它们正在运行,它们也会关闭所有其他活动,或者至少不关注它们.
为此,我使用Intent.FLAG_ACTIVITY_CLEAR_TASK标志.
似乎Intent.FLAG_ACTIVITY_CLEAR_TASK标志仅适用于API 11(蜂窝)及以上版本.
一些网站声称IntentCompat可以提供帮助,但即便有文档特别说:
仅在支持API 11或更高版本的设备上才会遵循此标志.
遗憾的是,我找不到使用IntentCompat函数的任何示例,并且描述与intents标记文档一样模糊和混乱
我该如何克服这个问题?
我应该为每个活动添加一个LocalBroadcastManager来监听这个事件,并在发生这种情况时关闭它们自己吗?
也许我在这里遗漏了什么?IntentCompat类中显示的其他函数是什么?也许其中一个可以帮忙吗?
请帮忙.
编辑:似乎Intent.FLAG_ACTIVITY_MULTIPLE_TASK完成了不关注以前活动的工作,但文档对其工作方式有一个非常模糊的描述,并且它也有很多关于它的警告.
我注意到的是,即使我们关闭新活动,应用程序的上一个任务也不会成为焦点,因此它将返回到用户之前访问过的位置.
有谁知道这面旗帜是如何运作的,我该怎么知道呢?在这种情况下使用是否安全?
如果我找不到任何其他解决方案,我想我会将其添加为答案.
我在Honeycomb操作栏中放置了一个Android AutoCompleteTextView.问题是即使AutoCompleteTextView具有焦点,它也不显示光标,因此最终用户认为该框没有焦点.
我正在尝试3.0的android操作栏,我参考
http://www.youtube.com/watch?v=gMu8XhxUBl8
代码TabsActivity
如下:
package com.test.actionbar;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
public class TabsActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tabA = bar.newTab().setText("A Tab");
ActionBar.Tab tabB = bar.newTab().setText("B Tab");
ActionBar.Tab tabC = bar.newTab().setText("C Tab");
Fragment fragmentA = new AFragmentTab();
Fragment fragmentB = new BFragmentTab();
Fragment fragmentC = new CFragmentTab();
tabA.setTabListener(new MyTabsListener(fragmentA));
tabB.setTabListener(new MyTabsListener(fragmentB));
tabC.setTabListener(new MyTabsListener(fragmentC));
bar.addTab(tabA);
bar.addTab(tabB);
bar.addTab(tabC);
}
protected class MyTabsListener implements …
Run Code Online (Sandbox Code Playgroud) tabs android runtimeexception android-3.0-honeycomb android-actionbar
我的目标是1.6,但我希望有一个漂亮的小部件可以使用stackview和Android SDK为小部件提供的其他改进,如果用户在3.0以上设备上.和1.6-2.3上的普通小部件/
我该怎么做两个版本的小部件?
非常感谢