标签: android-compatibility

EditText的onCreateContextMenu()不适用于真实设备

刚尝试在真实设备上测试我的应用程序(HTC Desire Z with Android 2.2).并发现我的上下文菜单根本不起作用EditText.否则上下文菜单有效:in ListView,ImageView等等.在模拟器上一切正常......

当我点击EditText时,它显示缩放框架之类的内容,然后显示异常(不是标准的Android)上下文菜单,其中显示:"选择文本","全选".它不显示我的菜单.这是截图:

  1. 点击之前
  2. 在点击期间
  3. 点击后(只需普通选择文字,选择全部,粘贴)

但没有像模拟器那样的菜单 - 看这里

这是我活动的源代码:

public class MyActivity extends Activity
{
    private static final String TAG=MyActivity.class.getName();

    EditText editText;
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        editText=(EditText )findViewById(R.id.editText);
        this.registerForContextMenu(editText);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
    {
        Log.v(TAG, "Creating context menu for view="+view);
        menu.add(Menu.NONE, Menu.FIRST+1, Menu.NONE, "Test menu");
        super.onCreateContextMenu(menu, view, menuInfo); …
Run Code Online (Sandbox Code Playgroud)

android contextmenu android-compatibility android-edittext

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

如何解决sdk 17和18之间列表项布局行为的变化?

我创建了一个简单的应用程序来说明在包含在SDK 17和SDK 18之间的RelativeLayout时LinearLayout行为的变化.首先,截图:

当targetSdkVersion为"17"时:

在此输入图像描述

当targetSdkVersion为"18"时:

在此输入图像描述

此活动的布局是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ffff"
    android:orientation="vertical" >

    <include layout="@layout/test_list_item"/>

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:overScrollMode="never"
        android:scrollingCache="false" >
    </ListView>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

text_list_item.xml是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ff0000" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="#ffff00"
        android:padding="10dp"
        android:text="foobar"
        android:textColor="#000000" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignBottom="@id/text"
        android:layout_alignTop="@id/text"
        android:background="#00ff00"
        android:orientation="horizontal"
        android:weightSum="1.0" >

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.5"
            android:background="#0000ff" />
    </LinearLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

活动的onCreate()如下所示:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    findViewById(R.id.text).bringToFront();
    final ListView mListView = (ListView) findViewById(R.id.listview);
    mListView.setAdapter(new TestAdapter());
}
Run Code Online (Sandbox Code Playgroud)

TestAdapter看起来像这样:

public class TestAdapter …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-listview android-linearlayout android-compatibility

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

如果最低SDK = 14,则为Lollipop提供Appcompat,兼容性和支持库

我们现有的Android应用程序支持最高级别为18的API级别.我们使用了兼容性库19.1.0.现在我们正在改变/升级到:

  1. 最低SDK = 14
  2. 目标= android-22

现在假设有不同版本的v4,v7,v13支持,兼容性和appcompat库,我不确定要包含哪些,哪些不包含.

我们使用maven进行依赖管理并使用Maven SDK deployer

android android-appcompat android-compatibility android-support-library maven-sdk-deployer

7
推荐指数
2
解决办法
5362
查看次数

使用admob 15.0.0与最新的支持库时的Gradle冲突

我使用的是"com.google.android.gms:play-services-ads:12.0.1".和android支持版本27.1.1.

当我尝试将我的广告库升级到最新版本(15.0.0)时,我收到一条错误消息,说我必须使用相同的版本规范.见下图.

在此输入图像描述

有没有办法为supportLibraries和play-services-ads使用最新版本?

请注意,当我使用play-services-ads版本12.0.1时,此问题不存在

android android-compatibility android-support-library android-gradle-plugin google-admob

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

删除R.java生成的android-support-v4错误

好的,步骤我跟随.

1 - 从现有来源创建新项目

2 - 选择Android\android-sdk\extras\android\compatibility\v4\samples\Support4Demos

3 - 肥育

所以,我美丽的eclipse创建了这个项目,但是他从gen中删除了R.java类,所以我从包的每个类中得到错误.我的事

另外,style.xml给我一些错误.

这让我很伤心,因为我可以在3天内从中学到任何东西,而我的朋友谷歌也没有帮助.

提前thx!

android android-compatibility android-support-library

6
推荐指数
1
解决办法
6251
查看次数

我的应用程序与Google Play商店中的Nexus 7不兼容

我已经向Playstore提交了一个应用程序,但它与Nexus不兼容这里是我的Manifest我的应用程序在Google Play支持的设备列表中 在此输入图像描述

当我在nexus设备中检查相同内容时,它在搜索中根本不可见

在此输入图像描述

 <uses-sdk android:minSdkVersion="14" 
    android:targetSdkVersion="14"/>

 <supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="true"
     /> 

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_ACCOUNTS"  />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.PREVENT_POWER_KEY"  />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.location" android:required="false"/>
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-permission
    android:name="android.permission.FLASHLIGHT"
    android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
    android:protectionLevel="normal"
    android:required="false" />
Run Code Online (Sandbox Code Playgroud)

我在谷歌搜索并做了必要的修改到清单仍然我不知道为什么我的应用程序与nexus 7不兼容

请帮我

提前致谢

android android-manifest android-compatibility google-play nexus-7

6
推荐指数
1
解决办法
6590
查看次数

最好在目标min API 14(ICS)时使用FragmentActivity(或ActionBarActivity)或系统Activity?

我正在让我的应用程序拥有最低版本的Android 4.0(ICS,API等级14).

首先,我猜测我可以摆脱使用FragmentActivity作为活动的基类,但似乎某些支持库类FragmentStatePagerAdapter在系统框架上不可用,它需要支持Fragment而不是系统Fragment.

所以我想知道我是否应该让我的活动继承自系统Activity,或继续使用FragmentActivity(或ActionBarActivity使用appcompat库时)?

android android-compatibility android-fragments android-support-library

6
推荐指数
2
解决办法
7571
查看次数

使用compatiblebiltiy库时,setRetainInstance不适用于ListFragment

我正在尝试在方向更改中保存ListFragment子类,因此我将setRetainInstance(true)添加到onCreate函数的末尾.我添加了一个onSaveInstanceState方法将所有数据添加到一个包中,然后将代码添加到onActivityCreated中以加载该数据.不幸的是,它不会起作用.

当我在Log.d的帮助下添加了一些调试消息时,我发现不仅没有调用onSaveInstanceState,而且onCreate是(文档似乎说当retainInstance为true时不应该发生).onCreate和onActivityCreated都没有捆绑我的数据(毫无疑问).

我猜这可能是兼容性库的一个问题,虽然我没有Android 3.0+设备来测试这个.

任何帮助表示赞赏,如果有必要,我可以发布一些代码片段,尽管我没有做任何复杂的事情.

更新:当我改变方向时(它应该是这样),没有调用onDestroy,所以似乎有些setRetainInstance正在工作

android android-compatibility android-fragments

5
推荐指数
1
解决办法
4211
查看次数

带有分频器的LinearLayout在预蜂窝上

从API级11 setDividerDrawable()setShowDividers()被引入上LinearLayout,使线性布局来显示子元素之间的分隔.我真的很想使用这个功能,但我也在Honeycomb之前定位设备(API级别<11).

解决此问题的一种方法是扩展LinearLayout并手动添加分隔符.这是一个原型:

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;

public class DividerLinearLayout extends LinearLayout
{
    public DividerLinearLayout(Context context)
    {
        super(context);
    }

    public DividerLinearLayout(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    public DividerLinearLayout(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
    }

    @Override
    public void addView(View child)
    {
        if(super.getChildCount() > 0)
        {
            super.addView(LayoutInflater.from(getContext()).inflate(R.layout.divider, null));
        }
        super.addView(child);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,使用这样的实现将改变迭代子进程的任何客户端的行为.一些视图将是客户自己插入的视图,一些视图将被插入DividerLinearLayout.如果用户在指定索引处插入视图,也会发生问题.可以实现索引的转换,但如果做错了,这可能会导致令人讨厌的错误.此外,我认为需要覆盖更多的方法.

有没有更好的方法来解决这个问题?有人已经开发出可自由使用的DividerLinearLayout等效物吗?它似乎不存在于Android的兼容性库中.

android android-layout android-linearlayout android-compatibility android-support-library

5
推荐指数
1
解决办法
2472
查看次数

应用程序在样式下更改主题时崩溃

我的安卓应用:

目标 AP I:22

最小 API : 15

设备运行于:API 级别22

我不明白整个主题概念,

在我的manifest.xml,我已经设置 android:theme="@style/AppTheme"

并且所有活动都使用这个主题

现在我的理解是,他们都使用名为的主题AppTheme,我现在可以通过在我的内部扩展其他主题来定义styles.xml

在我的 styles.xml

我有这个

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

我的理解是, AppCompat主题也允许我们在旧设备上使用更新的(比如材料主题)。我在 API Level 22 和 API Level 15 上运行这个应用程序,它工作正常

现在当我把它改成

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material">
        <!-- Customize your theme here. -->
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

它给出了一个警告,说这个主题只能在 API 21 或更高版本上使用,这是正确的,现在当我忽略警告并在 API 22 上运行它时,它会崩溃。为什么?

我还尝试将 …

android android-compatibility android-theme android-studio android-styles

5
推荐指数
1
解决办法
5344
查看次数