我一直在努力设计UI,这给了我很多问题.
我有一个Activity,它使用Theme.Dialog使其显示为弹出窗口.我的问题是我希望它始终具有最大屏幕宽度,而不管子组件的宽度.在下面的图像中,左侧的对话框宽度被强制旋转器中文本的宽度最大(我不介意剪裁的微调器文本 - 我对对话框宽度很满意,这就是我的方式我喜欢看.
如果我将微调器选择更改为具有较短文本的选项,我会在右侧显示对话框.而不是剪切文本和微调器强制对话框的最大宽度,文本很容易适应,微调器(和对话框)缩小.
我的布局是使用LinearLayout元素,我肯定是主要的问题,但我无法锻炼什么是合适的替代品或如何说'总是使对话框最大宽度'.
任何帮助非常感谢.

我正在编写一个应用程序,需要显示地址,以便我以后可以使用它.我从LocationManager获取位置,并希望在按下时显示显示地址的Toast.我的问题是,当按下按钮时,没有任何反应.(甚至没有在LogCat中)
这是代码:
Button getTaxi = (Button) findViewById(R.id.GetTaxi);
getTaxi.setOnClickListener(new View.OnClickListener() {
public void getAddress() {
Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());
String result = null;
try {
List<Address> list = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
if (list != null && list.size() > 0) {
Address address = list.get(0);
// sending back first address line and locality
result = address.getAddressLine(0) + ", " + address.getLocality();
}
} catch (IOException e) {
String exception = String.format("IOException!!");
Toast.makeText(getApplicationContext(), exception, Toast.LENGTH_LONG);
} finally {
if (result != …Run Code Online (Sandbox Code Playgroud) 我一直在寻找无所作为.我知道有几个问题,但我找不到一个适合我的问题.
基本上,我有一个活动(MainActivity),具有向主屏幕添加快捷方式的功能.当我单击快捷方式时,我希望它打开另一个活动(NewActivity).这里的搁置似乎是当我尝试启动与创建快捷方式的活动不同的活动时,它无法正常工作.
快捷方式成功完成,但是当我点击它时,我从Android系统得到一个"App not not installed"toast消息.
这是添加快捷方式的代码:
Intent shortcutIntent = new Intent();
shortcutIntent.setClassName("com.enceladus.myApp", "com.enceladus.myApp.NewActivity");
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Calculator");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(MainActivity.this, R.drawable.calc));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
MainActivity.this.sendBroadcast(addIntent);
Run Code Online (Sandbox Code Playgroud)
编辑:这是我的清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.enceladus.myApp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.enceladus.myApp.NewActivity"
android:label=""
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:launchMode="singleInstance"
/>
</application> …Run Code Online (Sandbox Code Playgroud) 我创建了一个应用程序,它有一个切换按钮来启动和停止计时器,就像秒表一样.当您第一次按下切换按钮(执行.start())时,计时器将开始计数,当您再次按下按钮(执行.stop())时,计时器出现在屏幕上以停止计数,但是当它再次启动时它会显示它是实际上仍然在后台计数,并在屏幕上显示时间,好像它从未停止过
码:
tglStartStop.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (tglStartStop.isChecked()) {
chronStopwatch.start();
}
else {
chronStopwatch.stop();
}
}
});
Run Code Online (Sandbox Code Playgroud) 在我的AndroidManifest.xml中,我有以下内容......
<service
android:name=".MyIntentService" >
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />"
<action android:name="com.mycompany.myapp.TEST" />
</intent-filter>
</service>
<receiver
android:name=".MyNetworkMonitor" >
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />"
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
理想情况下,当Wi-Fi或移动互联网服务改变状态时,我希望IntentService"唤醒"并解释系统广播的意图......但事实并非如此.
然而,BroadcastReceiver确实接收到Intents,我可以让它发送一个广播intent(com.mycompany.myapp.TEST)来唤醒我的IntentService并告诉它网络状态发生了变化.
所以问题是,为什么我的IntentService不会从系统意图广播唤醒通知网络状态变化,但它将从我的BroadcastReceiver的广播唤醒.困惑.
编辑:这是你在接近凌晨5点(oops)尝试编码时得到的.出于某种原因,我认为com.mycompany.myapp.TEST意图是作为广播工作.
我实际在做的是Intent i = new Intent ("com.mycompany.myapp.TEST")然后使用startService(i)哪个因为<intent-filter>条目而工作(即使没有MyIntentService.class在Intent中明确指定).这就是令人困惑的问题.
任何熟悉模拟器的人都会知道,在加载阶段,AVD的"屏幕"显示"android"一词,如下图所示......

突出显示(在图像中的字母DRO上)从左到右"扫描"以充当不确定的进度指示器.
我没有做太多的图形工作,所以我不熟悉不同的动画技术.这种类型的动画是常见的吗?如果是这样,它的名字是什么?
我想在我的主要活动的标题栏中实现类似的东西.打开时,它会对活动名称进行一次突出显示"扫描".除了为UX添加一些"浮华"之外,没有其他真正的目的.
在我的Android应用程序中,我有一个主要活动"MyActivity",它覆盖了onConfigurationChanged()方法.在该方法中,我检查方向的变化,如果更改为横向,则我调用另一个活动:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
super.onConfigurationChanged(newConfig);
startActivity(new Intent(this, BaseFullScreenActivity.class));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我将移动设备更改为横向时,将调用其他活动类"BaseFullScreenActivity",这可以正常工作.在该被调用的活动中,我再次覆盖onConfigurationChanged()方法以再次结束此子活动:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
super.onConfigurationChanged(newConfig);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在第二个方向更改(回到纵向),这应该结束我的孩子活动并再次显示主要活动,应用程序崩溃,我收到以下错误:
android.app.SuperNotCalledException:
Activity MyActivity did not call through to super.onConfigurationChanged()
Run Code Online (Sandbox Code Playgroud)
我在两个活动中都覆盖了onStop()方法并调用了super.onStop(),但这对我没有帮助.
还有其他想法吗?
在此先感谢您的帮助!
我之前已经问过这个问题,但没有任何痕迹或答案.抱歉,如果我错过了什么.
我以编程方式对EditText的2D数组进行表格布局.如果我设置背景颜色,订单将被清除.我知道解决方案是九个补丁.我已经制作了几个在XML布局中运行良好但在以编程方式应用时挂起应用程序,如下所示:
TableLayout tl = new TableLayout(this);
// tl.setBackgroundColor(0xff498263);
TableRow tr[] = new TableRow[9];
NinePatchDrawable ninenine = (NinePatchDrawable)
getResources().getDrawable(R.drawable.ninenine) ;
// Toast.makeText(this, "getResources is not null",
// Toast.LENGTH_LONG).show();
int x, y;
for (x = 0; x < 9; x++) {
tr[x] = new TableRow(this);
for (y = 0; y < 9; y++) {
entry[x][y] = new EditText(this);
entry[x][y].setText("");
entry[x][y].setWidth(52);
entry[x][y].setEnabled(true);
entry[x][y].setClickable(false);
entry[x][y].setInputType(2);
// entry[x][y].setBackground(ninenine);
entry[x][y].setBackgroundColor(0x880000ff);
Run Code Online (Sandbox Code Playgroud)
该程序编译但挂起.评论九号它有效但无国界.
我不明白的log.txt:
11-13 10:33:29.730: I/dalvikvm(2155): Could not find method android.widget.EditText.setBackground, referenced from method com.example.test_layout.MainActivity.onCreate
11-13 …Run Code Online (Sandbox Code Playgroud) 我需要维护一个包含两个字符串类型值的列表,例如v1,v2,每个键说k.什么是更好的选择
我正在创建一个Android应用程序,所以只关注性能.在第二种情况下,我可以直接访问,但每个值将包含另一个数组(我不知道,但它看起来像一个复杂的方式),而在第一种情况下,它将在每个访问上使用拆分函数,如v.split(",")[0 ]
请指导我.
Map<String,String[]> listMap= new HashMap<String, String[]>();
Map<String,String> listMap1= new HashMap<String, String>();;
for (int i = 1; i < tl.getChildCount(); i++) {
TableRow row = (TableRow) tl.getChildAt(i);
COLOR_TABLE clr = (COLOR_TABLE) row.getTag();
if (clr == COLOR_TABLE.green) {
//comp
String x1=listMap1.get( ((TextView) row.getChildAt(0)).getText());
String x2=listMap.get( ((TextView) row.getChildAt(0)).getText());
// now i have to add two string values in a list seperately
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用4.0.3目标,并且正在使用ksoap2。该Web服务是Visual Studio 2010 Express的WCF。
可能是soap_action,call或namespace的错误。
我每次都遇到下一个错误
05-24 02:49:42.738: W/System.err(5231): android.os.NetworkOnMainThreadException
05-24 02:49:42.748: W/System.err(5231): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1154)
05-24 02:49:42.748: W/System.err(5231): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
05-24 02:49:42.748: W/System.err(5231): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
05-24 02:49:42.748: W/System.err(5231): at java.net.InetAddress.getAllByName(InetAddress.java:214)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
05-24 02:49:42.748: W/System.err(5231): at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
05-24 02:49:42.748: W/System.err(5231): at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:46)
05-24 02:49:42.748: W/System.err(5231): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:68) …Run Code Online (Sandbox Code Playgroud)