小编Ted*_*Ted的帖子

Android/layout:如何创建标题内容布局

如何在Android中创建以下布局?

我想要一个"标题",即一直保持不变的标题.唯一应该改变的是标题下面的区域.

把它想象成一个网页,其中内容区域是它发生的全部=)

+--------------------+
| H E A D E R        |
+--------------------+
|                    |
|                    |
|                    |
|  C O N T E N T     |
|                    |
|                    |
|                    |
+--------------------+
Run Code Online (Sandbox Code Playgroud)

当然,它很容易创建一个LinearLayot,在顶部添加一个视图,然后在下面添加另一个视图 - tada!但是接下来的是你如何"设置"或设计项目,以便轻松改变内容中的内容.

真正想要的是能够"滑动"(参见这里)该区域,然后只是"滚入"内容区域中的新视图/事物,但保持相同的标题.

我真正想念的是一个综合的layoyt示例库...

问候

android

10
推荐指数
1
解决办法
2万
查看次数

画9补丁不起作用 - 无法编辑图像

在我发现(遗憾地)没有简单的方法在View周围创建一个简单的边框之后,我被迫使用9-patch-image方法在我的View周围获得边框.

所以我读了9-patch上的简短内容,它很容易理解.我开始使用Android SDK附带的"Draw 9-patch"应用程序,打开了一个我在Paint中创建的非常简单的图像然后......我卡住了.

根据页面(http://developer.android.com/guide/developing/tools/draw9patch.html),我应该能够定义图像可以展开的区域等等,只需单击边缘( "在1像素周长内单击以绘制定义可伸展贴片的线条......").

所以我尽力做到这一点,绝对没有任何反应.我试图在点击时按住SHIFT并按下鼠标右键,没有任何反应.当我将鼠标从1像素的边界移开时,我得到一个灰红色的"选框"(条纹).

底线是:无论我做什么,都没有任何反应.

android

9
推荐指数
1
解决办法
8844
查看次数

发送GCM消息(服务器端)通常会失败 - 但远非总是如此

我正在为我的Android应用程序使用Google Cloud Messaging(GCM)服务.我已经按照所有规则实现了它,并且它有效.好吧,差不多.

大多数情况下,我会说在60-70%的情况下,我可以使用谷歌网页上讨论的网络服务从我的服务器成功发送GCM消息.

通常,我从webservice获得以下回复,表明我成功发送了GCM消息:

{
    "multicast_id":8378088572050307085,
    "success":1,
    "failure":0,
    "canonical_ids":0,
    "results":
    [
        {
            "message_id":"0:1363080282442710%7c4250c100000031"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这就是说:一切OK,发送的消息.

但是,在许多情况下,我在调用Web服务时遇到HTTP错误,其中说:

无法从传输连接读取数据:已建立的连接已被主机中的软件中止.

这是.NET消息,告诉我调用webservice(使用HttpWebRequest和POST)失败.

这是一些显示问题的日志消息:

在此输入图像描述

这是我用来调用WS的代码:

public static string SendMessage(string registrationId, string command, string extra, bool retry)
{
    try
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send");
        request.Method = PostWebRequest;
        request.KeepAlive = false;

        GCMPostPacket json = new GCMPostPacket()
        {
            collapse_key = "1",
            time_to_live = 60,
            registration_ids = new List<string>(new string[] { registrationId }),
            data = new GcmData()
            {
                message = command,
                misc = extra
            }
        }; …
Run Code Online (Sandbox Code Playgroud)

.net android http google-cloud-messaging

9
推荐指数
1
解决办法
2832
查看次数

为什么Json.Net在序列化时会在我的对象上调用Equals方法?

我在使用Newtonsoft.Json SerializeObject方法时遇到了一个错误.之前有人问过这个问题,但与Newtonsoft合作的人没有回答为什么会这样.

基本上,这样打电话时SerializeObject:

string json = Newtonsoft.Json.JsonConvert.SerializeObject(from, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
Run Code Online (Sandbox Code Playgroud)

Equals在我的类中覆盖了很多方法中的错误:

public override bool Equals(object obj)
{
    if (obj == null)
        return false;

    CapacityConfiguration cc = (CapacityConfiguration)obj; // <-- TypeCastException here; other Properties of the same class are sent in as parameter!
}
Run Code Online (Sandbox Code Playgroud)

当然,通过这样检查,我意识到修复起来很"容易":

public override bool Equals(object obj)
{
    if (obj is CapacityConfiguration == false)
        return false;

    CapacityConfiguration cc = (CapacityConfiguration)obj;
}
Run Code Online (Sandbox Code Playgroud)

但真正的问题是: 为什么Json.Net在类的Equals方法中发送其他类型的对象?更具体地说,Json.Net似乎在类中发送了许多其他属性,而不是相同类型的另一个对象.

对我来说,这完全是奇怪的.任何输入将不胜感激. …

c# json equals serializer json.net

9
推荐指数
1
解决办法
652
查看次数

印刷机上的视图:按下时更改背景颜色?如何显示正在按下视图?

暂时,我有一个自定义视图,其中9个补丁图像作为边框.

该自定义视图在LinearLayout中放置了三次,因此它看起来像这样:

+------------------------+
|  CustomView            |
+------------------------+
|  CustomView            |
+------------------------+
|  CustomView            |
+------------------------+
Run Code Online (Sandbox Code Playgroud)

我已将一个click事件监听器附加到View,因此它是可单击的.但后来我点击它,我无法看到我点击它 - 颜色没有变化.

所以,我认为我会附加一个"onPress"监听器,然后改变视图的背景,但我找不到这样的监听器.

所以,问题是 - 如何在View上创建行为,以便我可以看到它被按下了?这通常在Android中完成,带有绿色背景,表示现在正在按下它.

问候

android

8
推荐指数
1
解决办法
1万
查看次数

为什么它对于一个方法说"弃用"是唯一可以用于所选API级别的方法?

在我的Android清单中,它说:

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="16" />
Run Code Online (Sandbox Code Playgroud)

但是当我编写这段代码时,最后的getNotification会让我警告说该方法是"已弃用":

Notification myNotification = new Notification.Builder(appContext)
.setContentTitle("SIC")
.setContentText(tickerText)
.setWhen(when)
.setDefaults(Notification.DEFAULT_SOUND)
.setAutoCancel(true)
.setContentIntent(contentIntent)
.getNotification(); // <-- warning here
Run Code Online (Sandbox Code Playgroud)

现在,问题是对于API级别10,这是我正在开发的最小值,getNotification是唯一可以使用的.名为"build()"的新方法适用于API级别16.

那么,为什么我得到了被弃用的警告,即使它是唯一可以和应该使用的警告?有人可能认为警告/文档应该适应minSdkLevel,而不是高等级的......

sdk android

8
推荐指数
1
解决办法
3843
查看次数

在活动中保持屏幕开启 - 不适用于FLAG_KEEP_SCREEN_ON

所以,很长一段时间我都认为我知道如何阻止屏幕进入睡眠模式,我只是在我的Activity中使用了这段代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

但是,我意识到这只适用于我的手机处于"开发人员模式"时,即启用/检查USB调试(设置 - >开发人员选项 - > USB调试)时.然后,上述代码确实阻止屏幕/设备进入睡眠状态.

当没有检查那个调试时,我的屏幕就像没有明天一样进入睡眠状态.我在我的设备上运行Android 4.04,并且

 android:minSdkVersion="12"
 android:targetSdkVersion="16"
Run Code Online (Sandbox Code Playgroud)

有谁听说过这个问题?

编辑

我已经使用Commonswares建议进行了测试,并将setKeepScreenOn()添加到代码中,所以它看起来像这样:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
View root = findViewById(android.R.id.content); 
if (root != null)
    root.setKeepScreenOn(true);
Run Code Online (Sandbox Code Playgroud)

我也检查了这个代码实际执行,它是.但它并没有改变一件事......

android screen android-activity usb-debugging

8
推荐指数
1
解决办法
7985
查看次数

MonoTouch/MonoDevelop:打开xib文件时"没有得到项目信息"

所以,我刚刚在运行Lion的MacBook上安装了MonoTouch所需的一切.

我按照步骤/说明进行安装(参见此处),然后创建了一个新的解决方案.当我打开我的xib文件时,我收到以下错误(在MonoDevelop中):

更新Objective-C类型信息时出错.没有得到项目信息
   的System.Exception:没有得到项目信息
   在MonoDevelop.Macdev.XcodeSyncing.XcodeProjectTracker.UpdateTypes(IProgressMonitor的显示器,布尔力)[0x00029在/Users/builder/data/lanes/monodevelop-mac-2.8.6.4 /ca00645c/source/monodevelop/main/src/addins/MonoDevelop.MacDev/XcodeProjectTracker.cs:351

除了安装Xcode,然后是Framework/Runtime(MRE-2.10.8_3),然后是MonoDevelop(2.8.6.4),然后是MonoTouch,我什么都没做.

有人见过这个吗?我在网上的这个特定错误中找不到一件事.

mono monodevelop xamarin.ios

7
推荐指数
1
解决办法
1603
查看次数

Popup(使用PopupWindow或Dialog)填充屏幕的宽度是没有明显原因的

我想要弹出一个表现!=)

问题是弹出窗口"填充整个屏幕的宽度",即使布局清楚地表明它应该"wrap_content".如果我使用Dialog或PopupWindow无关紧要.

首先,弹出窗口的XML布局,popup_message.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    android:background="@android:color/transparent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:orientation="horizontal"
        android:layout_gravity="center" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center"
            android:background="@android:color/transparent"
            android:gravity="center_vertical|center_horizontal"
            android:orientation="horizontal"
            android:paddingLeft="10dp"
            android:text="@string/new_message"
            android:textColor="#000000"
            android:textAllCaps="true" >

        </TextView>
    </LinearLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="15dp"
        android:background="#ffffff"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/popup_message_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textCursorDrawable="@null" >
        </TextView>

        <Button
            android:id="@+id/jobview_pickup_start_submit"
            android:layout_width="fill_parent"
            android:layout_height="35dp"
            android:layout_below="@+id/popup_message_textView"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_marginBottom="15dp"
            android:layout_marginTop="15dp"
            android:gravity="center_horizontal"
            android:text="Confirm"
            android:textColor="#000000" />
    </RelativeLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码:

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View input = inflater.inflate(R.layout.popup_message, null);
PopupWindow pw = new PopupWindow(input, LayoutParams.WRAP_CONTENT, …
Run Code Online (Sandbox Code Playgroud)

android dialog popupwindow

7
推荐指数
1
解决办法
5369
查看次数

Android:ActivityCompat.requestPermissions 不显示弹出窗口(Android 13,targetSdkVersion=33)

SO 上已经有很多关于这个主题的问题()。然而,到目前为止我找到的答案都不能解决我的问题。

问题是ActivityCompat.requestPermissions不会触发弹出窗口,要求用户授予通知权限。

设置:

  • 在物理设备上测试(Android 13、Pixel 6)
  • 定位 SDK 版本 33 (targetSdkVersion=33)
  • 最小SdkVersion = 29
  • AndroidManifest 拥有权限:<uses-permission android:name="android.permission.POST_NOTIFICATION" />
  • 在 onCreate 中,在其他工作 Activity 中,我执行以下操作:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_DENIED)
{
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.POST_NOTIFICATIONS}, 1);
}
Run Code Online (Sandbox Code Playgroud)

回调如下:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case 1:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(MainScreenActivity.this, "Woho, you have enabled notifications!", Toast.LENGTH_SHORT).show(); …
Run Code Online (Sandbox Code Playgroud)

notifications android android-permissions

7
推荐指数
1
解决办法
6763
查看次数