小编Jon*_*nik的帖子

如何在Android中限制平板电脑的应用?

我想我的应用程序只运行移动设备而不是

平板电脑10和7英寸

.但我的应用程序是在两个平板电脑大小运行.请帮助我

android tablet google-play

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

自定义XML属性,没有自定义View in Fragment

我正在尝试在现有View中添加自定义XML属性

将它们添加到自定义视图并不是一件大事,但我不知道如何在"基本"视图中访问这些属性(例如TextView,LinearLayout,ImageView ......)

当涉及片段和/或图书馆项目时,这将更加困难

到目前为止,这是我的代码

海关属性定义和XML(attrs.xml和布局):

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="StarWars">
    <attr name="jedi" format="string" />
    <attr name="rank" format="string" />
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:sw="http://schemas.android.com/apk/res-auto"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

<TextView
    android:id="@+id/name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="28dp"
    android:gravity="center_horizontal"
    sw:jedi="Obiwan" />

<TextView
    android:id="@+id/rank"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="28dp"
    android:gravity="center_horizontal"
    sw:rank="Master" />
Run Code Online (Sandbox Code Playgroud)

因为我在片段上膨胀这个(所以没有onCreate与attrs arg!),尝试获得2个sw自定义属性的唯一方法是:

  1. 将自定义LayoutInflater.Factory设置为onCreateView中的Fragment LayoutInflater

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      super.onCreateView(inflater, container, savedInstanceState);
    
      LayoutInflater layoutInflater = inflater.cloneInContext(inflater.getContext());
      layoutInflater.setFactory(new StarWarsLayoutFactory());
    
      View fragmentView = layoutInflater.inflate(R.layout.jedi, container, false);
      ((TextView) fragmentView.findViewById(android.R.id.jedi)).setText("Yep");
    
      return fragmentView;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 尝试在自定义LayoutInflater.Factory上获取自定义属性:

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

android android-xml android-fragments android-view android-custom-attributes

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

如何通过边缘滑动(而不是主页图标)检测导航抽屉是否已打开?

我在我的Android应用程序中使用导航抽屉.

由于这是一个我觉得很难发现的模式,我的计划是在屏幕底部添加一条消息,直到用户最终发现它并通过滑动成功打开它.

我知道我可以使用:

public void onDrawerOpened(View drawerView) {
    // Stop telling the user, he know how it works
}
Run Code Online (Sandbox Code Playgroud)

但是当使用ActionBar中的左上角按钮打开它时也会触发此操作.

我们热烈欢迎任何检测成功刷卡的建议.

android swipe navigation-drawer

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

Android Gradle构建结果apk包含混淆和非混淆的类

在构建我的android项目时,我已将以下内容添加到build.gradle文件中以启用proguard:

   buildTypes {
     release {
        runProguard true
        proguardFile 'proguard-project.txt'
        proguardFile '../common/proguard-shared.txt'
        proguardFile getDefaultProguardFile('proguard-android.txt')
     }
   }
Run Code Online (Sandbox Code Playgroud)

一切都建立好但是当我反汇编生成的dex文件时,事实证明混淆和非混淆的文件都在那里.

例如,common.Base64和common.a都存在,第一个是非混淆的,而第二个是.

不确定它的相关性,但项目本身有一个非典型的结构.这是我们拥有超过40个Android应用程序的大型Android代码库的结果.我们正在尝试创建一个基于gradle的构建流程,它与现有的基于eclipse的构建并行.

如果一切顺利,我们打算将文件结构更改为更本机的gradle,并开始使用flavor和build-types来包含我们创建的许多库以适应缺乏风味等.

上面的项目E依赖于这样的一系列库:

E - > D - > C - > B - > A.

例如,E项目取决于库D,它依赖于库C ...一直到A.

android build proguard gradle android-build

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

如何让runProguard为android-library Gradle插件工作?

我想在我的Android库的发布版本上运行ProGuard.以下是build.gradle我的项目中的文件.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/../lib'
            }
        }
    }

    buildTypes {
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

运行gradlew cleangradlew build返回以下错误:

> Could not find method buildTypes() for arguments [build_25r1m0a3etn5cudtt5odlegprd$_run_closure2_closure10@5f3306ad] on project …

android proguard gradle android-library android-gradle-plugin

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

自定义主题ActionBar android(菜单不起作用)

我想自定义我的应用程序,我已应用主题,但选项菜单似乎不适用我的主题.

我希望我的文字颜色为白色,背景为黑色,突出显示/选中的菜单项为黄色.这是我的theme.xml:

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
    <item name="android:actionMenuTextColor">@color/application_color5</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabs</item>
    <item name="android:selectableItemBackground">@drawable/icone_barratopo_selector</item>
    <item name="android:actionBarItemBackground">@drawable/icone_barratopo_selector</item>
    <item name="android:selectableItemBackground">@drawable/icone_barratopo_selector</item>
    <!-- Panel attributes -->
    <!-- <item name="android:panelBackground">@drawable/selectable_background</item> --


    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarTabTextStyle">@style/MyActionBarTabText</item>
    <item name="actionMenuTextColor">@color/application_color5</item>
    <item name="actionBarTabStyle">@style/MyActionBarTabs</item>
    <item name="selectableItemBackground">@drawable/icone_barratopo_selector</item>
    <item name="actionBarItemBackground">@drawable/icone_barratopo_selector</item>
    <item name="selectableItemBackground">@drawable/icone_barratopo_selector</item>
</style>

<!-- ActionBar styles -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@drawable/background_barratopo_superior</item>
    <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>

    <!-- Support library compatibility -->
    <item name="background">@drawable/background_barratopo_superior</item>
    <item name="titleTextStyle">@style/MyActionBarTitleText</item>
</style>

<!-- ActionBar title text -->
<style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/application_color2</item>
</style>

<!-- …
Run Code Online (Sandbox Code Playgroud)

android android-menu android-theme android-actionbar

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

如何正确地从AndroidManifest.xml中读取Android Studio(minSdkVersion)?

我有一个在Eclipse中创建的Android项目,导出为Gradle构建文件,然后在Android Studio中打开.(是的,在AS中创建一个干净的项目要容易得多,但我需要支持当前的项目结构.)

否则事情现在大部分都在起作用,但仍有一些东西需要解决.在每个Activity类中,AS都显示以下错误:Class requires API level 1 (current min is -1): Activity

在此输入图像描述

Alt + Enter提议用@TargetApi注释修复它...但为什么我必须这样做,当AndroidManifest.xml我们有,我们有:

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

AndroidManifest.xml位于项目根目录(Eclipse默认?).看起来Android Studio无法正确读取其中的设置.该项目仍然编译好.

知道如何摆脱错误吗?

Eclipse生成的内容build.gradle如下所示:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')    
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.0"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src'] …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio android-gradle-plugin

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

在命令行上卸载Android SDK的选定部分

这与"卸载旧的Android SDK版本"有关,除了我想在无头的Linux CI服务器(磁盘空间不足)上执行此操作.

android命令行工具是否提供了删除SDK旧部分的选项?通过快速查看,它可以删除的唯一内容是AVD.我忽略了什么吗?

或者,我想我可以手动删除SDK_HOME下的内容.但删除哪些东西是安全的?其他候选人比这些?

  • 我只需要支持API级别14及以上,所以我想我可以删除platforms/喜欢android-3和的东西android-4.
  • docs(800MB),samples(300MB)
  • 怎么样system-images?我是否需要例如android-18/armeabi-v7a/,android-18/x86/如果我只想使用Gradle(和Ant)进行自动APK构建(没有模拟器的东西)?

至少在docs完全删除时,下次我运行时android update sdk --no-ui,它再次开始取回它们:

   Downloading Documentation for Android SDK, API 19, revision 1
Run Code Online (Sandbox Code Playgroud)

我可以避免update添加我扔掉的SDK部分吗?

免责声明:是的,磁盘很便宜,我真的应该添加更多.但是现在这个特定的服务器(8.5G磁盘)我没有那个选项,但我还是想让它运行Android 19版本...

continuous-integration command-line android android-build

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

如何在android中使用DateFormat.getDateTimeInstance()仅显示当前时间

我是android的新手.在android中我想在textview中显示当前时间,格式为hh:mm am/pm(例如:3:02 PM)我使用以下代码.

String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date()); tv.setText(currentDateTimeString);

它给出了当前的日期,月份,年份和时间.但我只需要从中获取当前时间.有没有办法只显示时间?任何人都可以帮我从上面的代码中获取没有日期的时间.[using DateFormat.getDateTimeInstance()]

java android date-format date-formatting

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

Spring可以在OPTIONS方法上自动生成"允许"标题吗?

当我RequestMapping在Spring MVC中配置我的s时,我想Allow在使用该OPTIONS方法时自动生成正确的头.

例如,使用此控制器:

@Controller
@RequestMapping("/test")
public class TestController {

    @RequestMapping(method = RequestMethod.GET)
    ResponseEntity<String> getTest() {
        return new ResponseEntity<>("test", HttpStatus.OK);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我OPTIONS对该URL 发出请求,我会得到405,方法不允许.相反,我希望它能自动回复

Allow: GET, OPTIONS204 - No content

我有一个想法添加拦截器,如下所示:

@Override 
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new HandlerInterceptor() {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            if("OPTIONS".equalsIgnoreCase(request.getMethod())){
                response.setHeader("Allow", "GET, OPTIONS");
                response.setStatus(204);
                //TODO figure out the @Controller and what possible methods exist
                return false;
            }
            return …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc http-options-method

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