小编Mar*_*__C的帖子

如何设置各个gridview单元格的背景颜色

我有一个GridView,每个单元格包含一些文本,我希望能够设置单个单元格的背景颜色.

我的GridView的XML是:

<GridView android:id="@+id/students_grid"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:numColumns="6"
          android:gravity="center"
          android:stretchMode="columnWidth">
</GridView>
Run Code Online (Sandbox Code Playgroud)

我的GridView的代码是:

GridView gridView = (GridView) findViewById(R.id.students_grid);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, student_array);
gridView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

我希望我能够使用以下方法设置单个细胞的背景颜色:

gridView.getChildAt(random_student).setBackgroundColor(Color.parseColor("#18A608"));
Run Code Online (Sandbox Code Playgroud)

但是,这会引发一个空指针异常,并且在进一步检查时,似乎gridview.getChildCount()返回0.我看到gridview.getCount正确返回gridview中的项目数,但这对我没有帮助单个细胞的背景颜色.

我下次去的任何想法?

android gridview

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

Nexus 7 Spinners太大了

我有一个用户使用Nexus 7反馈给我说我的应用程序屏幕显示为预期,除了我Spinners,它看起来比他们应该做的大得多.

普通屏幕 http://imgur.com/eG7b3

Nexus 7上的大型微调器 http://imgur.com/X4Kqo

我有一个Spinner TextView布局:

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textview"
    android:layout_height="36dip"
    android:layout_width="match_parent"
    android:textSize="24.5sp"
    android:textColor="#768766"
/>
Run Code Online (Sandbox Code Playgroud)

由此产生的RelativeLayout:

<Spinner
    android:id="@+id/spinner_weekday1"
    android:layout_below="@id/col1day"
    android:layout_height="wrap_content"
    android:prompt="@string/enterday"
    android:layout_width="200dip"
    android:entries="@array/weekdaylist"
    android:layout_marginRight="60dp"
    android:layout_marginBottom="20dip"
    android:textSize="24.5sp"
    android:textColor="#768766"
/>
Run Code Online (Sandbox Code Playgroud)

我让应用程序在一系列其他设备上运行,看起来很好.任何有关Nexus 7可能Spinners以这种方式显示的想法?

android spinner

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

Android SQLite CursorWindowAllocationException崩溃

我有一种情况,当我发出一些cursor.moveToNext()请求时我的程序崩溃了.错误消息显示:

android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=773 (# cursors opened by this proc=773)
at android.database.CursorWindow.<init>(CursorWindow.java:112)
at android.database.CursorWindow.<init>(CursorWindow.java:100)
at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
at android.database.sqlite.SQLiteCursor.clearOrCreateWindow(SQLiteCursor.java:364)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:162)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:156)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:161)
at android.database.AbstractCursor.moveToNext(AbstractCursor.java:209)
at net.cunniman.teacherplannerlite.SchoolClassDataSource.getClassForDayView(SchoolClassDataSource.java:173)
at net.cunniman.teacherplannerlite.DayView.getSchoolClasses(DayView.java:200)
at net.cunniman.teacherplannerlite.DayView.displayDate(DayView.java:176)
at net.cunniman.teacherplannerlite.DayView.plusDay(DayView.java:287)
at net.cunniman.teacherplannerlite.DayView.onClick(DayView.java:93)
at android.view.View.performClick(View.java:3565)
at android.view.View$PerformClick.run(View.java:14165)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4514)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
at dalvik.system.NativeStart.main(Native Method)

try {
this.openForRead();
for (int day_counter = 0; day_counter < DAY_PERIOD.length/2; day_counter++) …
Run Code Online (Sandbox Code Playgroud)

android cursor

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

如何增加Android微调器的可点击宽度?

我有一个Spinner显示单位数字(1-6).

当我在手机上进行测试时,几乎不可能点击一个数字,因为它们非常窄(字体大小为12sp),唯一看似可点击的区域就是文本本身.

理想情况下,我希望用户能够在Spinner下拉菜单上单击更大的宽度,而不仅仅是文本.我已经尝试用空格填充但是这些被抑制了,我尝试过使用PaddingLeft/Right但是再次没有区别.

这里是 Spinner

<Spinner
            android:id="@+id/spinner_period1"
            android:layout_toRightOf="@id/spinner_weekday1"
            android:layout_below="@id/col1day"
            android:layout_height="wrap_content"
            android:prompt="@string/enterperiod"
            android:layout_width="80dp"
            android:entries="@array/periodlist"
            android:layout_marginRight="340dp"
            android:layout_marginBottom="20dip"
            />
Run Code Online (Sandbox Code Playgroud)

请注意,我还Spinner使用以下方法设置文本属性:

<TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/textview"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="12sp"
        android:textColor="#768766"
        />
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?提前致谢

标记

android spinner

3
推荐指数
1
解决办法
2583
查看次数

如何在textview中单击文本行

我有一个包含多行文本的文本视图,例如

这是第1行

这是第2行

这是第3行

我希望能够根据用户点击的行存储文本,即如果他们点击第2行我想存储"这是第2行".

我怎么能这样做?

编辑于9月1日:

我不确定可点击式跨度解决方案是如何工作的?我能够从我的文本视图中获取特定的文本行,例如获取我将使用的第1行:

TextView tv = (TextView) view.findViewById(R.id.class_list);
String selectedClass =(String)(tv).getText();
int l1start = tv.getLayout().getLineStart(1);
int l1end = tv.getLayout().getLineEnd(1);
String l1 = selectedClass.substring(l1start, l1end);
Run Code Online (Sandbox Code Playgroud)

但我看不出如何通过使用可点击的跨度来确定实际点击了哪个行号?

android textview

3
推荐指数
1
解决办法
547
查看次数

从Parse承诺链返回数据

我想我已经掌握了Parse承诺链,但我不明白的是我如何从函数返回我的数据(i)备份promise链和(ii)返回原始JS代码的调用方法.

使用下面的代码,调用第一个Parse查询,然后是a(),最后是b(),这一切都很好.每个阶段的console.log都用于测试目的,并显示链已按顺序执行.

我现在有3个问题:

  1. 如何从函数a()和函数b()中获取数据,以便我可以在main函数getUserCompetitionTokens()中访问它?

  2. 如何将getUserCompetitionTokens()中的任何数据返回到调用此Parse代码的主程序?

  3. 如果我想从函数a()以及从函数b()到BOTH的数据返回到我的主程序怎么办?


function getUserCompetitionTokens(comp_id) {
    Parse.initialize("****","****");
    currentUser = Parse.User.current();

    user_competition = Parse.Object.extend("UserCompetition");
    var user_comp_query = new Parse.Query(user_competition);
    user_comp_query.equalTo("UserParent", currentUser);
    user_comp_query.find().then(a).then(b);

    function a(user_comp_results) {

        var no_results = user_comp_results.length;
        var id = user_comp_results[0].id;
        console.log("User Competition Output: " + no_results + " results found, first item id: " + id);

        var Competition = Parse.Object.extend("Competition");
        var query = new Parse.Query(Competition);
        return query.get(comp_id, {
            success: function(competition) {
                console.log("COMP - " + competition.id);
            },
            error: function(competition, error) {
                console.log(error);
            }
        });
    } …
Run Code Online (Sandbox Code Playgroud)

javascript return promise chain parse-platform

3
推荐指数
1
解决办法
1708
查看次数

如何初始化选项菜单复选框

我有一个带复选框的选项菜单.当用户点击它时,我可以选中并取消选中该复选框.但是,我使用SharedPreferences来存储此复选框的值,因此我还需要做的是使用存储在SharedPreferences pref值中的任何内容初始化复选框,即如果pref为true/false,则将复选框设置为选中/选中.

我想我需要在onCreateOptionsMenu中放入一些代码,我显然需要使用.setChecked(首选项)来设置复选框,但是我如何以编程方式引用复选框本身?

使用以下命令创建菜单:

public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)

可以使用以下方法选中/取消选中该复选框:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.two_week:
            if (item.isChecked()) {
                item.setChecked(false);
            }
            else {
                item.setChecked(true);
            }
            return true;
        default:
            return super.onOptionsItemSelected(item);
     }
}
Run Code Online (Sandbox Code Playgroud)

checkbox android android-optionsmenu

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

在javascript中从当前用户解析检索指针

在Parse中,我设置了具有多个列的User表,其中大多数是字符串,但是一个是指向另一个Parse类的指针.我想在查询中使用此指针

在Java中,我可以访问在我的查询中使用的指针,如下所示:

ParseUser currentUser = ParseUser.getCurrentUser();
ParseObject comParent = currentUser.getParseObject("ComParent");
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,我尝试过使用:

var currentUser = Parse.User.current();
var comParent = currentUser.get("ComParent");
Run Code Online (Sandbox Code Playgroud)

但这会返回undefined.我究竟做错了什么?

javascript pointers parse-platform

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

处理 Django 用户订阅到期日期

我有一个扩展 AbstractBaseUser 的 User 模型

class User(AbstractBaseUser):
    email = models.EmailField(max_length=255, unique=True, default='abc123@gmail.com')
    forename = models.CharField(max_length=20, default='')
    surname = models.CharField(max_length=20, default='')
    account_expiry = models.DateField(default=datetime.now() + timedelta(days=365))
Run Code Online (Sandbox Code Playgroud)

在我的所有视图中,我使用 LoginRequiredMixin 进行身份验证,例如

class IndexView(LoginRequiredMixin, generic.TemplateView):
Run Code Online (Sandbox Code Playgroud)

我想不仅通过电子邮件和密码对用户进行身份验证,而且还想通过检查帐户是否已到期。

我的问题是 - 实现这一目标的最佳(最简单?)方法是什么。我是否按照此处所述编写自己的自定义身份验证后端?或者我应该写一个自定义的 Mixin 或中间件?

authentication django

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

android:textCursorDrawable未知

我有一个白色的EditText,在Android 3.1及以上版本中,光标没有显示(因为它也是白色).有关信息,我使用

android:background="@android:drawable/editbox_background_normal"
Run Code Online (Sandbox Code Playgroud)

我在这篇文章中读到Set EditText游标颜色,解决方案是将textCursorDrawable属性设置为"@null",我尝试过,但我不能使用它,因为它说该属性是未知的.

我在AndroidManifest.xml中设置了我的SDK,如下所示:

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

但它仍然无法识别android:textCursorDrawable

有任何想法吗?

android android-edittext

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