Android 一些小问题

时间:2021-05-26 05:27:16

有时候遇到一些看起来很奇怪的问题。在这里一并记录一下。

1、ListView拖动反黑

List正常显示,但是一拖动,整个背景就变成黑色。停止拖动后,颜色又变回正常。

解决方法:在Layout文件中设置ListView的属性:

android:scrollingCache="false"


2、ListView默认点击样式失效

ListView是有默认点击样式的当设置了Item的background为某种颜色或某张图片时,默认的点击样式就会失效。

其实想清楚了,很简单。ListView本来有多种状态:平常的、选中的、点击时的。如果设置了背景,那么所有这些状态下都是这一个背景了。所以点击时没有反应。

正确的设置方法是:

在Drawable的资料里建一个xml文件,例如名为style_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:state_pressed="true" android:drawable="@drawable/btn_item_sel" />
	<item android:drawable="@drawable/btn_item_nor" />
</selector>
再设置item的Background为@drawbale/style_list_item


3、listView中removeFooterView之后,列表无法再点击。

本来想实现列表滑动到底部时自动加载内容,加载完所有内容后,去掉列表底部的“更多”按钮。但在实际实现过程中发现,在onScroll方法里removeFooterView后,列表不会再响应对Item的点击,有时过一会儿又会恢复。如果设置Visible为Gone,列表的底部还是会占一块空间。在网上看到另外的朋友也遇到这个问题。大概是因为不能在onScroll方法里做这件事情。

后来就将removeFooterView的动作改到了其它地方,不放在onScroll方法里就正常了。


4、代码中动态添加TableRow到LinearLayout中,TableRow不显示

源代码如下(摘自*网站,这个问题我也是在那里得到的答案,超爱*的)

LinearLayout tabella = (LinearLayout) findViewById(R.id.tabella_contatori);

    for(int i =0; i<array_list.size(); i++){
        TableRow row = new TableRow(getApplicationContext());
        row.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

        TextView data = new TextView(getApplicationContext());
        data.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.2f));
        data.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceMedium);
        data.setTextColor(Color.BLACK);
        data.setBackgroundColor(Color.WHITE);
        data.setPadding(2, 0, 0, 0);
        data.setText("asd");

        row.addView(data);
        tabella.addView(row);
    }
}
这时,修改代码如下之后,再运行起来,TableRow的内容就会展现出来了。

data.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));

就是添加到TableRow中的元素,它们LayoutParam应该是TableRow类中的LayoutParams。