小编Bri*_*ian的帖子

为什么每当我尝试选择文本时,我的Android UI都会表现得很糟糕?

我正在开发Android应用程序(API 15及更低版本).在我的UI中,我有一个TextView元素,我希望人们能够从中进行选择和复制.这是我的元素的样子:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp" />
    <TextView
        android:id="@+id/chat_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:padding="8dp" />

    <TextView
        android:id="@+id/chat_message"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_margin="2dp"
        android:padding="8dp"
        android:textSize="18sp"
        android:gravity="right"
        android:textColor="@color/BLACK"
        android:textIsSelectable="true"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

此TextView位于使用SimpleCursorAdapter填充的ListView中.这个ListView看起来像这样:

<ListView
    android:id="@+id/chat_text_display"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:layout_marginRight="2dp" 
    android:layout_marginBottom="2dp"
    android:layout_marginLeft="2dp"
    android:padding="5dp"
    android:background="@color/WHITE"
    android:divider="@null"
    android:divider_height="0dp"
    android:stackFromBottom="true"
    android:transcriptMode="alwaysScroll"/>
Run Code Online (Sandbox Code Playgroud)

ListView在LinearLayout中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/custom_border">
    <ListView
        android:id="@+id/chat_text_display"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_marginTop="2dp"
        android:layout_marginRight="2dp"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="2dp"
        android:padding="5dp"
        android:background="@color/WHITE"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:stackFromBottom="true"
        android:transcriptMode="alwaysScroll"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:orientation="horizontal"
        android:layout_marginTop="2dp"
        android:layout_marginRight="1dp"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="2dp">
        <Button
            android:id="@+id/text_send"
            android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android textview android-layout

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

Gradle无法在新的Android Studio 2.0中同步我的项目

我刚刚将我的Android Studio从1.5升级到2.0升级(即安装了全新版本).升级似乎进展顺利,但是当我打开它时,当Gradle正在同步我的项目时,我的项目出现问题.

Gradle同步运行几分钟后,我收到此错误:

Failed to sync Gradle project MyProject
    Unknown host 'jcenter.bintray.com'. You may need to adjust the proxy settings in Gradle.
    Error:  Enable Gradle "offline mode' and sync project
            Learn about configuring HTTP proxies in Gradle
Run Code Online (Sandbox Code Playgroud)

所以,我点击链接说:

Enable Gradle "offline mode' and sync project
Run Code Online (Sandbox Code Playgroud)

然后Gradle旋转一两秒,我现在有这样的信息:

Failed to sync Gradle project MyProject
    Error: No cached version of com.android.tools.build:gradle:1.3.0 available for offline mode.
           Disable Gradle 'offline mode' and sync project
Run Code Online (Sandbox Code Playgroud)

所以,我点击这个链接:

Disable Gradle 'offline mode' and sync project
Run Code Online (Sandbox Code Playgroud)

我又回到了第一个错误.

我正在处理的机器100%脱机.它没有,也不会有任何形式的网络连接.我想我需要禁用某种需要互联网的检查,但我不确定是什么.这是可修复的,还是我必须降级回Android Studio …

android android-gradle-plugin android-studio-2.0

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

什么是"非静态方法"错误以及"this"如何工作?

我有一些非常基本的Java问题,我想一劳永逸地理解这些问题.我有以下简短的代码:

public class VeryBasicJava{
    public static void main(String[] args){
        int x = 3;
        int y = 4;
        swapMe(x, y);
    }
    private void swapMe(int a, int b){
        int a;
        int b;
        int tmp = a;
        this.a = b;
        this.b = a;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到了可怕的"非静态方法swapMe(int,int)无法从静态上下文引用"错误.另外,我得到"a已在swapMe(int,int)中定义","b已经在swapMe(int,int)中定义"

我需要最终通过我的厚厚的头骨,是"非静态方法"错误,它是如何(为什么)引起的,以及如何避免它.

此外,我假设你可以做我试图用'swapMe'方法中的'a'和'b'变量做的事情.我以为我可以传入'a'和'b',但也创建新变量'a'和'b',并用"this"关键字引用它们.

我知道这是非常基本的,但这两个"问题"是我使用Java的两个主要问题,并且出于某种原因,似乎无法正确学习.

谢谢大家,花时间阅读本文.祝你有美好的一天.

java oop compiler-errors instance-variables class-members

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

关于在PHP中嵌入HTML的问题

前段时间我在一块电路板上看到了一个帖子,其中有人谈论在PHP中嵌入HTML的人.我做了很多PHP开发,但我仍然在同一文档中交错HTML和PHP.有没有更好的方法来做到这一点,我做错了吗?我知道在JSP/JSF中他们使用带有命名空间的XML文档来插入他们的HTML代码,所以我想知道是否有一个类似PHP的功能,我应该利用它.

感谢您抽出宝贵时间阅读.:-)

html php

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

如何使用CURL从页面解析实际的HTML?

我"试图"抓取页面中具有以下结构的网页:

<p class="row">
    <span>stuff here</span>
    <a href="http://www.host.tld/file.html">Descriptive Link Text</a>
    <div>Link Description Here</div>
</p>
Run Code Online (Sandbox Code Playgroud)

我正在使用curl抓取网页:

<?php
    $handle = curl_init();
    curl_setopt($handle, CURLOPT_URL, "http://www.host.tld/");
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    $html = curl_exec($handle);
    curl_close($handle);
?>
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现我不应该使用正则表达式来解析从卷曲返回HTML,而且我应该使用PHP DOM.这就是我这样做的方式:

$newDom = new domDocument;
$newDom->loadHTML($html);
$newDom->preserveWhiteSpace = false;
$sections = $newDom->getElementsByTagName('p');
$nodeNo = $sections->length;
for($i=0; $i<$nodeNo; $i++){
    $printString = $sections->item($i)->nodeValue;
    echo $printString . "<br>";
}
Run Code Online (Sandbox Code Playgroud)

现在我并不假装我完全理解这一点,但我得到了要点,我确实得到了我想要的部分.唯一的问题是,我得到的只是HTML页面的文本,就像我从浏览器窗口中复制它一样.我想要的是实际的HTML,因为我想提取链接并使用它们,如下所示:

for($i=0; $i<$nodeNo; $i++){
    $printString = $sections->item($i)->nodeValue;
    echo "<a href=\"<extracted link>\">LINK</a> " . $printString . "<br>";
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我无法获得链接,因为我只获取网页的文本而不是我想要的来源.我知道"curl_exec"正在拉HTML,因为我已经尝试过了,所以我相信DOM在某种程度上剥离了我想要的HTML.

html php regex dom

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

需要帮助获取自定义布局以使用我的Android AlertDialog

我已成功为我的Android应用程序创建了一个有效的AlertDialog:

public class MyClass extends DialogFragment{
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        ArrayList selectedItems = new ArrayList();
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(R.string.pick_toppings)
        builder.setMultiChoiceItems(R.array.my_array, null, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                if (isChecked) {
                    selectedItems.add(which);
                } else if (selectedItems.contains(which)) {
                    selectedItems.remove(Integer.valueOf(which));
                }
            }
        });
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                // do stuff here ...
            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-alertdialog

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

需要帮助获取Android TextWatcher以处理传入的复合条形码数据

我正在编写一个使用和外部连接USB条形码/ RFID扫描仪的应用程序.正在扫描的数据是"复合"数据.这是一个例子:

=+03000=W12560712345600=%2800&>0090452359
Run Code Online (Sandbox Code Playgroud)

那是来自复合数据扫描.数据中的分隔符是等号(=)或&符号(&).第一位=+03000说扫描中有三个数据部分:

=W12560712345600

=%2800

&>0090452359
Run Code Online (Sandbox Code Playgroud)

该数据可以具有从1到N的任意数量的数据部分.

在我的Android应用程序中,我有一个包含三个EditText元素的表单.我需要对这个复合扫描数据做的是使用分隔符将其分解,并将每个数据粘贴到适当的EditText字段中.

经过多次痛苦之后,我已经意识到我不能只操纵标准输入,并且我需要TextWatcher在我的一个EditText字段上使用捕获扫描数据以便我可以操作它.

我的问题是我无法弄清楚如何做到这一点.这是我有的:

activity_main.xml中

<LinearLayout>
    <TextView />
    <EditText android:id="@+id/datafield01" />
    <EditText android:id="@+id/datafield02" />
    <EditText android:id="@+id/datafield03" />
    <Button />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText dataField01 = (EditText)findViewById(R.id.datafield01);
        EditText dataField02 = (EditText)findViewById(R.id.datafield02);
        EditText dataField02 = (EditText)findViewById(R.id.datafield03);

        dataField01.addTextChangedListener(editTextWatcher);
    }

    TextWatcher editTextWatcher = new TextWatcher(){
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int …
Run Code Online (Sandbox Code Playgroud)

android textwatcher

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

当 API 调用完成时,如何从 .RAZOR 主页面内的所有子组件触发/刷新我的 .RAZOR 主页面?

我正在开发一个允许用户搜索我们的数据库的应用程序。当用户输入搜索词时,应用程序会访问 API 端点并返回数据。然后我显示数据。

当 API 返回数据时,我有一个范围服务:

services.AddScoped<AppState>();
Run Code Online (Sandbox Code Playgroud)

这使得每个返回的数据集可以在应用程序的所有组件中使用。

页面加载后SearchResults.razor,它就会从我的范围服务中获取结果,然后绘制页面的其余部分。

我需要一个“加载”微调器来放置数据,直到 API 返回数据,这可能需要很长时间,具体取决于搜索的数据量。

我的问题是,我无法弄清楚使用什么作为真/假“触发器”来了解是否显示数据或加载旋转器,或者在 API 向我发送数据后如何刷新页面。

我下面的内容仅适用于第一次初始搜索(从我的Index.razor页面),但不适用于任何包含的“过滤器”组件。

搜索结果.razor:

@page "/searchresults"
@layout PageTopComponents

<Header.razor></Header.razor>

<LeftMenu.razor>

    <FilterRazorComponent01.razor></FilterRazorComponent01.razor>

    <FilterRazorComponent02.razor></FilterRazorComponent02.razor>

    <FilterRazorComponent03.razor></FilterRazorComponent03.razor>

    <FilterRazorComponent04.razor></FilterRazorComponent04.razor>

</LeftMenu.razor>

<MainContentComponent.razor>

    // CONTENT HERE SHOULD BE VISIBLE WHEN DATA HAS ARRIVED, OTHERWISE IT SHOULD SHOW A "WAITING" SPINNER
    @if(API_Data_Received != null && API_Data_Received.count > 0){
        foreach(){
            // API Retrieved Data Here
        }
    } else {
        // Loading Spinner
    }

    <ContinueSearch.razor></ContinueSearch.razor>

    <Paginator.razor @ref="PaginatorComponentReference">

        <ChildContent>

            // THIS IS WHERE I …
Run Code Online (Sandbox Code Playgroud)

c# asp.net razor blazor

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

一个人如何学习Java?(将字节数组转换为十六进制字符串

我知道这听起来像一个广泛的问题,但我可以用一个例子来缩小范围.我在Java上非常新.对于我的一个"学习"项目,我想创建一个内部MD5文件,供我们使用.我开始非常简单,尝试散列字符串,然后再转到文件.我创建了一个名为MD5Hasher.java的文件并编写了以下内容:

import java.security.*;
import java.io.*;
public class MD5Hasher{
    public static void main(String[] args){
        String myString = "Hello, World!";
        byte[] myBA = myString.getBytes();
        MessageDigest myMD;
        try{
            myMD = MessageDigest.getInstance("MD5");
            myMD.update(myBA);
            byte[] newBA = myMD.digest();
            String output = newBA.toString();
            System.out.println("The Answer Is: " + output);
        } catch(NoSuchAlgorithmException nsae){
            // print error here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我访问了java.sun.com以查看java.security的javadoc以了解如何使用MessageDigest类.阅读后我知道我必须使用"getInstance"方法来获取我可以使用的可用MessageDigest对象.Javadoc继续说"使用更新方法通过它处理数据." 所以我查看了更新方法并确定我需要使用我给它提供字符串的字节数组的那个,所以我添加了那个部分.Javadoc接着说:"一旦更新了所有要更新的数据,就应该调用其中一个摘要方法来完成哈希计算." 我再次看了一下方法,看到摘要返回了一个字节数组,所以我添加了那个部分.然后我在新的字节数组上使用"toString"方法来获取我可以打印的字符串.然而,

答案是:[B @ 4cb162d5

我在StackOverflow上做了一些调查,并在此处找到了一些信息:

如何生成MD5哈希?

给出了以下示例:

String plaintext = 'your text here';
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt …
Run Code Online (Sandbox Code Playgroud)

java md5

5
推荐指数
2
解决办法
1270
查看次数

在 Blazor 中使用 @inject 与 [Inject] 依赖注入之间有什么根本区别吗

假设我有这个:

SomePage.razor:

@inject Something something
@page "/somepage"

<h1> My Page </h1>

@code {
    // Using "Something" here ...
}
Run Code Online (Sandbox Code Playgroud)

这有什么根本区别吗:

AnotherPage.razor:

@page "/anotherpage"

<h1> My Page </h1>

@code {
    [Inject]
    Something something { get; set; }
    // Using "Something" here ...
}
Run Code Online (Sandbox Code Playgroud)

或者它们的工作方式相同,这只是“程序员的偏好”?

c# blazor .net-5

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