小编Zba*_*ian的帖子

Android:从操作栏的自定义布局中删除左边距

我正在使用自定义操作栏视图,如下面的屏幕截图所示,操作栏中有一个空白的灰色空间.我想删除它.

在此输入图像描述

我做了什么:

RES /值-V11/styles.xml

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
        <item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)

RES /值/ my_custom_actionbar.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:height">60dp</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

表现

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

<application
            android:icon="@drawable/ic_launcher"
            android:label="@string/AppName"
            android:theme="@style/AppBaseTheme" >
    <!-- activities... etc -->
</application>
Run Code Online (Sandbox Code Playgroud)

主要活动

public void onCreate(Bundle bundle) {
    super.onCreate(bundle);

    ActionBar actionbar = getSupportActionBar();

    actionbar.setDefaultDisplayHomeAsUpEnabled(false);
    actionbar.setDisplayHomeAsUpEnabled(false);
    actionbar.setDisplayShowCustomEnabled(true);
    actionbar.setDisplayShowHomeEnabled(false);
    actionbar.setDisplayShowTitleEnabled(false);
    actionbar.setDisplayUseLogoEnabled(false);
    actionbar.setHomeButtonEnabled(false);

    // Add the custom layout
    View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
    actionbar.setCustomView(view);
}
Run Code Online (Sandbox Code Playgroud)

我发现了一篇最近的帖子,指出最新版本存在问题.我还将ADT和SDK更新到Android 5.

Android ActionBar的自定义视图未填充父级

我不知道该怎么办.

编辑(部分解决方案):

不适用于Android <= API 10. …

xml android android-actionbar-compat

249
推荐指数
11
解决办法
10万
查看次数

Java替换字符串中的所有方括号

我想从字符串中删除方括号,但我不知道如何.

String str = "[Chrissman-@1]";
str = replaceAll("\\[\\]", "");

String[] temp = str.split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
Run Code Online (Sandbox Code Playgroud)

但我的结果是:[克里斯曼| 1]方括号不会被删除.

我试着用不同的正则表达式:"\\[.*?\\]","\\[\\d+\\]" 但结果是一样的,方括号仍然附着在弦上.

编辑:

我试过了:

str.replaceAll("]", "");
str.replaceAll("[", "");
Run Code Online (Sandbox Code Playgroud)

现在我得到了:

Exception in thread "Thread-4" java.util.regex.PatternSyntaxException: Unclosed character class near index 0
[
^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

java regex string split

62
推荐指数
5
解决办法
14万
查看次数

Android - 获取Facebook个人资料图片

我不知道为什么,但是当我试图获取用户的个人资料图片时,我总是变为空.我是否需要设置一些特定权限才能获得访问权限?

以下是我的方法:

public static Bitmap getFacebookProfilePicture(String userID) throws SocketException, SocketTimeoutException, MalformedURLException, IOException, Exception
{
   String imageURL;

   Bitmap bitmap = null;
   imageURL = "http://graph.facebook.com/"+userID+"/picture?type=large";
   InputStream in = (InputStream) new URL(imageURL).getContent();
   bitmap = BitmapFactory.decodeStream(in);

   return bitmap;
}

Bitmap bitmap = getFacebookProfilePicture(userId);
Run Code Online (Sandbox Code Playgroud)

我变得空了.我不知道原因是什么?任何帮助都很明显.

profile android facebook

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

无论是libtoolize还是glibtoolize都找不到

我正在尝试编译.cpp文件,但我必须安装libssh2.我从libssh2.org下载了包,当我输入:./ buildd我得到:

无论是libtoolize还是glibtoolize都找不到!

我不知道该怎么做,我已经包含在头文件libssh2.h(#include)中,并且该文件确实存在于我拥有源文件的同一文件夹中,我正在尝试编译.

c++ linux ssh compilation libssh2

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

Android调整位图保持宽高比

我有一个自定义视图(1066 x 738),我传递的是位图图像(720x343).我想缩放位图以适应自定义视图,而不超过父级的边界.

在此输入图像描述

我希望实现这样的目标:

在此输入图像描述

我该如何计算位图大小?

我如何计算新的宽度/高度:

    public static Bitmap getScaledBitmap(Bitmap b, int reqWidth, int reqHeight)
    {
        int bWidth = b.getWidth();
        int bHeight = b.getHeight();

        int nWidth = reqWidth;
        int nHeight = reqHeight;

        float parentRatio = (float) reqHeight / reqWidth;

        nHeight = bHeight;
        nWidth = (int) (reqWidth * parentRatio);

        return Bitmap.createScaledBitmap(b, nWidth, nHeight, true);
    }
Run Code Online (Sandbox Code Playgroud)

但我所取得的成就是:

在此输入图像描述

android bitmap scale

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

Android 应用程序上下文配置不会使用新的语言环境进行更新

当我不在保留所有业务逻辑的自定义构建类中使用Context相关类(活动、片段、服务、视图等)时,我需要访问应用程序的本地化字符串ViewModel。例如,在 a的帮助下将 a发布String到:UILiveData

toastMessageLiveData.value = buildLastLoginToastMessage()

fun buildLastLoginToastMessage() {
   val lastLoginDiff = (System.currentMillis() - getLastLogin()) / DateUtils.HOURS_IN_MILLIS

   return MyApp.instance.getString(R.string.last_login_txt, lastLoginDiff)
}
Run Code Online (Sandbox Code Playgroud)

现在,Activity我正在观察LiveData的变化,并显示 Toast 消息。

这工作正常,但如果用户更改应用程序的语言就会出现问题。布局已更新,我可以看到使用了新语言环境的语言,但该MyApp.instance.getString(R.string....)功能仍在使用旧语言环境。如果我强制终止应用程序并重新启动它,它会工作,因为attachBaseContext再次调用应用程序并应用新的语言环境。但是,我不想强​​制终止应用程序,我需要一个解决方案来更新应用程序的配置。

用于创建或更新 Context

fun buildLocalizedContext(context: Context): Context {
   // From preferences, load the saved Language and Country codes
   val language = getSavedLanguage()
   val country = getSavedCountry()

   // Create the new locale
   val locale = Locale(language, country) …
Run Code Online (Sandbox Code Playgroud)

android locale

15
推荐指数
1
解决办法
1484
查看次数

jQuery比较两个DOM对象?

单击元素:

$('.my_list').click(function(){
   var selected_object = $(this);

   $('.my_list').each(function(){
      var current_object = $(this);

      if( selected_object == current_object ) alert('FOUND IT !');
   });
});
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但我没有得到警告信息"发现它!".

javascript jquery dom compare object

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

运行Android Lint遇到了......失败.显示java.lang.NullPointerException

我刚刚将Google Play服务库添加到我的项目中,当我在我的一个项目文件中进行修改时,我不断从eclipse获得一个错误对话框:

"运行Android Lint"遇到了问题.失败.

所以,我启用了错误日志(窗口 - >显示视图 - >错误日志)选项卡,我发现了一个警告和错误行:

错误:失败:com.android.ide.eclipse.adt

java.lang.NullPointerException
    at com.android.tools.lint.checks.ApiDetector$ApiVisitor.checkField(ApiDetector.java:1416)
    at com.android.tools.lint.checks.ApiDetector$ApiVisitor.visitSelect(ApiDetector.java:1277)
    at com.android.tools.lint.client.api.JavaVisitor$DispatchVisitor.visitSelect(JavaVisitor.java:904)
    at com.android.tools.lint.client.api.JavaVisitor$DelegatingJavaVisitor.visitSelect(JavaVisitor.java:1147)
    at lombok.ast.Select.accept(Select.java:91)
    at lombok.ast.MethodInvocation.accept(MethodInvocation.java:121)
    at lombok.ast.ExpressionStatement.accept(ExpressionStatement.java:63)
    at lombok.ast.Block.accept(Block.java:106)
    at lombok.ast.MethodDeclaration.accept(MethodDeclaration.java:240)
    at lombok.ast.NormalTypeBody.accept(NormalTypeBody.java:57)
    at lombok.ast.ClassDeclaration.accept(ClassDeclaration.java:239)
    at lombok.ast.CompilationUnit.accept(CompilationUnit.java:83)
    at com.android.tools.lint.client.api.JavaVisitor.visitFile(JavaVisitor.java:219)
    at com.android.tools.lint.client.api.LintDriver.checkIndividualJavaFiles(LintDriver.java:1624)
    at com.android.tools.lint.client.api.LintDriver.runFileDetectors(LintDriver.java:993)
    at com.android.tools.lint.client.api.LintDriver.checkProject(LintDriver.java:869)
    at com.android.tools.lint.client.api.LintDriver.analyze(LintDriver.java:442)
    at com.android.tools.lint.client.api.LintDriver.analyze(LintDriver.java:363)
    at com.android.ide.eclipse.adt.internal.lint.LintJob.run(LintJob.java:163)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Run Code Online (Sandbox Code Playgroud)

和警告:致命错误:在null处找不到API数据库

An exception stack trace is not available.
Run Code Online (Sandbox Code Playgroud)

我的应用程序正在运行,但每次进行编辑和保存时关闭对话框都很烦人.

android lint nullpointerexception

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

使字符串可单击,在TextView中加下划线

在此输入图像描述

我想使字符串"this link"加下划线和可点击,但我不知道如何实现.

XML文件:

<string name="submitText">Before you submit, please check out &lt;u>this link&lt;/u></string>
Run Code Online (Sandbox Code Playgroud)

在我的片段中:

tvSubmit.setText(Html.fromHtml(getString(R.string.submitText)));
Run Code Online (Sandbox Code Playgroud)

我不希望整个字符串是可点击的,只有下划线部分.我不能使用LinearLayout2个单元格的水平,因为在较小的设备上,字符串不会有连续的外观,它将被分成2个单元格.

我试过了什么:

tvSubmit.setMovementMethod(LinkMovementMethod.getInstance());
Spannable sp = (Spannable) tvSubmit.getText();
ClickableSpan click = new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        showLink();
    }
};
sp.setSpan(click, 0, sp.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)

上面的代码使整个字符串加下划线,并且文本的颜色也变为浅蓝色.

android hyperlink underline textview

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

Android在API级别> = 8中旋转TextView

我有简单的TextView

<TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:rotation="45"
   android:text="Simple text" />
Run Code Online (Sandbox Code Playgroud)

在Android 2.2.2上,文本不会旋转到45度.

我看到了不同的主题,但每个人都在做动画.我不想动画.我想要的只是旋转textview.

android rotation textview

11
推荐指数
2
解决办法
9132
查看次数