Questions tagged «android»

Android是Google的移动操作系统,用于对数字设备(智能手机,平板电脑,汽车,电视,Wear,Glass和IoT)进行编程或开发。对于与Android相关的主题,请使用特定于Android的标签,例如android-intent,android-activity,android-adapter等。对于与开发或编程无关但与Android框架相关的问题,请使用以下链接:https:// android.stackexchange.com。


8
如何收听PreferenceFragment中的首选项更改?
如上所述这里,我继承PreferenceFragment并显示它的活动中。该文档仅在您将PreferenceActivity子类化的情况下说明了如何在此处侦听首选项更改。由于我没有这样做,我该如何收听偏好更改? 我尝试在我的PreferenceFragment中实现OnSharedPreferenceChangeListener,但它似乎不起作用(onSharedPreferenceChanged似乎从未被调用)。 到目前为止,这是我的代码: SettingsActivity.java public class SettingsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); } } SettingsFragment.java public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { public static final String KEY_PREF_EXERCISES = "pref_number_of_exercises"; @Override public void onCreate(Bundle …

8
在Android WebView中全屏播放HTML5视频
好吧,我已经搜索了几天,如何在Android WebView上以全屏模式显示HTML5视频。 我设法在Webview上播放HTML5视频。以全屏模式显示视频时会出现问题。 如我所知,android有两种处理<video>标签的方法: 在<= 2.3.3的android版本上,onShowCustomView方法被触发,我可以拥有VideoView实例,并在视频完成时设置侦听器,设置控制器等。到目前为止,一切都很好。 在ICS上(可能是3.0及更高版本),看起来<video>是用不同的方式处理的。播放HTML5视频时,在正常模式下不会调用onShowCustomView-好像WebView内部有一个内部业务在播放视频,并且显示了<video>标签中定义的所有控件-我无法以任何方式访问它。实际上,如果在正常模式下播放视频,则可以,因为控件在那里并且可以正常工作。 这使我想到了一个大问题:以全屏模式显示视频时,会调用onShowCustomView-但在ICS上,“ view”参数不是VideoView的实例。 我设法发现该实例属于VideoSurfaceView,它是HTML5VideoFullScreen类的私有内部类。我们访问此内部类的唯一方法是通过反射。 在查看了该类的GrepCode之后,我了解到,与VideoView不同,HTML5VideoFullScreen $ VideoSurfaceView不包含可以监听其事件或访问其控件的MediaPlayer实例。我唯一能做的就是直接使用此VideoSurfaceView并将其置于全屏布局中,而无需控制它。 底线-以全屏显示视频时,我不知道视频何时结束,也没有显示其控件-这是非常可悲的。我无法关闭全屏显示。 我尝试了一些失败的解决方法: 反思:我试图从内部类VideoSurfaceView到达具有MediaPlayer成员的HTML5VideoFullScreen实例。我没有设法得到它,我不确定这是可能的(ViewSurfaceView不保存其所有者的实例)。 通过Javascript(例如,附加)注册视频事件,并通过JavascriptInterface处理我在JAVA中需要的内容:我发现此解决方案不可靠,因为这样做时我遇到了另一个问题:<video>标签可以嵌套在一个。iframe源不是我的源,我也无法获取其内容(getElementById或getElementsByTagName [i]为null)-这意味着,我无法到达iframe中的<video>元素。 我仍在寻找解决方案,关于此问题的文章很少。有人设法解决吗?帮助将不胜感激! VideoView类:此处(具有MediaPlayer) HTML5VideoFullScreen $ VideoSurfaceView类:此处(没有MediaPlayer)

4
Android xml错误:带有RelativeLayout(@ id / LinearLayout_acc,@ id / ProgressBar_statusScreen)的“找不到与给定名称匹配的资源”
好的,这开始让我很烦。该错误会以一种非常特殊的方式弹出,而不是非常合乎逻辑的方式。 首先,我要说的是,我已经查看了有关此错误的其他问题,Google也这样做了。据我所知,大多数类似问题的发生是因为人们引用了String资源或不在同一布局文件中的其他内容,他们将'+'放置在'@ id +'或类似内容中。 我的问题出现在带有RelativeLayout。的layout .xml文件中。其中包含一个TableLayout,两个LinearLayout包含一些文本,最后一个ProgressBar。我想要的是将进度条与使用的相对布局android:layout_alignParentBottom="true"对齐,然后将进度条上方的两个线性布局对齐(底部线性布局在进度条上方对齐,另一个在底部线性布局上方对齐)。 它应该足够简单,看起来好像可行,即图形视图显示所需的结果。但是,问题来了,Eclipse在两个线性布局上给了我一个错误, “错误:找不到与给定名称匹配的资源(在'layout_above,值为'@ id / LinearLayout_acc')。” 以及其他线性布局的相同错误(请参考进度条)。我已经检查了三次以上,确认没有错别字(在packagename.R.java中也存在ID),并且我已经尝试过多次清理项目。 保存(和自动构建)时不会出现错误,除非我决定运行该项目。另一个怪异的事情是,当我从进度条引用底部的线性布局而不是顶部的线性布局时,我没有任何错误! 我的布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/background_activity" > <TableLayout ... /> <LinearLayout android:id="@+id/LinearLayout_dist" android:layout_above="@id/LinearLayout_acc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" > <TextView ... /> <TextView ... /> </LinearLayout> <LinearLayout android:id="@+id/LinearLayout_acc" android:layout_above="@id/ProgressBar_statusScreen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" > <TextView ... /> <TextView ... …
92 android  xml  eclipse 

4
如何使用isInEditMode()在编辑器中使用自定义视图查看布局
当我尝试编辑布局xml时,我必须编辑具有自定义视图的软件,Eclipse对我说: 在Eclipse中显示时,在自定义视图中使用View.isInEditMode()跳过代码 但是我不知道在应用程序中如何以及在哪里必须使用isInEditMode() 我的xml文件是 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ff000000" > <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:textSize="32dip" android:scrollbars="none" android:lines="1" android:freezesText="true" android:textColor="@color/result" /> <EditText android:id="@+id/input" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:textSize="28dip" android:scrollbars="none" android:singleLine="true" android:autoText="false" android:imeOptions="flagNoEnterAction|flagNoExtractUi" /> <ListView android:id="@+id/history" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:cacheColorHint="#ff000000" android:choiceMode="singleChoice" android:scrollbarStyle="outsideInset" android:scrollbars="none" /> <calculator.GraphView android:id="@+id/graph" android:layout_width="fill_parent" android:layout_height="0dip" …

16
限制Android上ListView的高度
我想在下方显示一个按钮ListView。问题是,如果ListView扩展位置(添加了项目...),则按钮被推出屏幕。 我尝试了LinearLayout权重(如Android中的建议:为什么视图没有maxHeight?),但是我权重错误或者根本不起作用。 另外,我在某处找到了使用的提示RelativeLayout。在ListView随后将被与按钮上方设置android:layout_abovePARAM。 问题是我不知道以后如何放置按钮。在我发现的示例中,下方的“视图” ListView已使用进行了调整android:layout_alignParentBottom,但我不希望按钮紧贴屏幕底部。 除了使用setHeight方法和所需空间的一些计算外,还有其他想法吗? 编辑: 我得到了很多有用的答案。 bigstone和user639183的解决方案几乎可以完美运行。但是,我必须在按钮底部添加一个额外的填充/边距,因为它仍会被推到屏幕的一半(但随后停止) 如果要将按钮固定在屏幕底部,则只有相对布局的Adinia答案就可以了。这不是我想要的,但对于其他人可能仍然有用。 我最终选择了AngeloS的解决方案,因为它只是创建了我想要的效果。但是,我LinearLayout对按钮周围的做了两个小的更改: 首先,因为我不希望在我的布局任何绝对值,我换android:layout_height="45px"到wrap_content,其工作也很不错。 其次,由于我希望按钮在水平方向居中(仅垂直支持)LinearLayout,因此将android:orientation =“ horizo​​ntal”更改为“ vertical”。 AngeloS在最初的帖子中还说过,他不确定周围的android:layout_weight="0.1"参数是否有效果;我只是试过,实际上确实如此!没有,按钮再次被推出屏幕。LinearLayoutListView

10
用Android播放任意音
有什么方法可以使Android发出任意频率的声音(意味着,我不想预先录制声音文件)? 我环顾四周,ToneGenerator是我唯一能找到的东西,它甚至很近,但是它似乎只能输出标准DTMF音调。 有任何想法吗?
92 android  audio 

6
如何在ActionBar中显示自定义视图?
我想在操作栏中显示自定义搜索(为此我正在使用ActionBarSherlock)。 我明白了: 但是我想使自定义布局(edittext字段)占据整个可用宽度。 我已经按照这里的建议实现了自定义布局。 这是我的自定义布局search.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="?attr/actionButtonStyle" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_gravity="fill_horizontal" android:focusable="true" > <FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical|fill_horizontal" > <EditText android:id="@+id/search_query" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="left|center" android:background="@drawable/bg_search_edit_text" android:imeOptions="actionSearch" android:inputType="text" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:src="@drawable/ic_search_arrow" /> </FrameLayout> </LinearLayout> 并在MyActivity: ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayShowTitleEnabled(false); actionBar.setIcon(R.drawable.ic_action_search); LayoutInflater inflator = …

1
android工具栏popupTheme vs theme
我经常在布局文件中看到以下Toolbar声明: <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> </android.support.v7.widget.Toolbar> 为什么有两个与主题相关的属性:主题和popupTheme? 他们每个人的目的是什么?

10
使用XML在Android TextView中使用自定义字体
我已将一个自定义字体文件添加到我的资产/字体文件夹中。如何从XML使用它? 我可以通过以下代码使用它: TextView text = (TextView) findViewById(R.id.textview03); Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Molot.otf"); text.setTypeface(tf); 我不能使用android:typeface="/fonts/Molot.otf"属性从XML做到这一点吗?

4
如何在Android上的JNI下捕获SIGSEGV(分段错误)并获得堆栈跟踪?
我正在将一个项目移到新的Android Native Development Kit(即JNI)上,我想抓住SIGSEGV(如果它发生的话(可能还有SIGILL,SIGABRT,SIGFPE)),以便呈现一个不错的崩溃报告对话框,而不是(或之前)当前发生的情况:该进程立即异常死亡,并且操作系统可能会尝试重新启动它。(编辑: JVM / Dalvik VM捕获信号并记录堆栈跟踪和其他有用的信息;我只想向用户提供将这些信息通过电子邮件发送给我的选项。) 情况是:我没有编写大量的C代码,完成了该应用程序中的大部分工作(所有游戏逻辑),尽管在许多其他平台上都经过了充分的测试,但我在Android中完全有可能端口,将其作为垃圾进行处理并在本机代码中导致崩溃,因此我希望当前显示在Android日志中的崩溃转储(本机和Java)(我猜在非Android情况下将是stderr)。我可以随意修改C和Java代码,尽管回调(传入和传出JNI)的数量大约为40,显然,小差异的加分。 我听说过J2SE,libjsig.so中的信号链库,并且如果我可以在Android上安全地安装类似的信号处理程序,那将解决我的问题中的棘手部分,但是我没有看到这样的Android / Dalvik库。

7
Android,检测何时启动其他应用
我正在尝试开发一个应用程序,该应用程序可以防止用户在没有密码的情况下进入指定的应用程序。情况是... 用户点击“电子邮件”应用程序(例如) 我的应用检测到应用启动 我的应用程序确认它是“电子邮件”应用程序 我的应用在顶部打开一个视图,要求输入密码 用户输入密码,如果正确,我的应用程序消失,将“电子邮件”应用程序放在顶部 我可以做其余的事情,只是第2部分让我感到困惑,并且经过很多天阅读了《广播意图》等并尝试在我的试用项目中收听“ android.intent.action.MAIN”等之后,似乎可以检测到我的应用程序何时启动。 有人可以帮忙吗?我是否正在寻找正确的方法,寻找新的应用程序来广播启动意图,还是应该在系统日志中查找新的意图,还是应该使用本机代码来做一些事情? 任何指点都会有所帮助,即使您无法完全回答,我也可以做更多研究。非常感谢。伊恩

18
Android,canvas:如何清除(删除)位于surfaceView中的画布(=位图)的内容?
为了制作简单的游戏,我使用了一个模板,该模板使用如下位图绘制画布: private void doDraw(Canvas canvas) { for (int i=0;i<8;i++) for (int j=0;j<9;j++) for (int k=0;k<7;k++) { canvas.drawBitmap(mBits[allBits[i][j][k]], i*50 -k*7, j*50 -k*7, null); } } (画布在“ run()”中定义,/ SurfaceView位于GameThread中。) 我的第一个问题是如何清除(或重画)整个画布以形成新布局? 其次,如何仅更新屏幕的一部分? // This is the routine that calls "doDraw": public void run() { while (mRun) { Canvas c = null; try { …

11
如何在水平LinearLayout上添加(垂直)分隔线?
我试图将分隔线添加到水平线性布局,但无济于事。分频器只是不显示。我是Android的新手。 这是我的布局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" tools:context=".MainActivity" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/llTopBar" android:orientation="horizontal" android:divider="#00ff00" android:dividerPadding="22dip" android:showDividers="middle" > <Button android:layout_width="wrap_content" android:layout_height="match_parent" android:text="asdf" /> <Button android:layout_width="wrap_content" android:layout_height="match_parent" android:text="asdf" /> </LinearLayout> </RelativeLayout>


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.