1、给表格设置一个背景色(线的颜色)
2、给表格设置一个内边距(线的宽度的一半)
3、设置每一项内边距(线的宽度的一半)
3、给项的内容设置一个背景色(颜色不同于线即可)
显示效果大概是这样的:
二、数据的动态加载使用Adapter类,便与布局加载
自定义TableLayout加载的主体方法:
public void setAdapter(BaseAdapter baseAdapter, int column) {
if (baseAdapter == null || baseAdapter.getCount() == 0) {
return
}
this.mAdapter = baseAdapter
this.column = column
drawLayout()
}
private void drawLayout() {
removeAllViews()
int realcount = mAdapter.getCount()
int count = 0
if (realcount <column) {
count = column
} else if (realcount % column != 0) {
count = realcount + column - (realcount % column)
} else {
count = realcount
}
TableRow tableRow = null//每一行的TableRow
for (int i = 0i <counti++) {
final int index = i
View view = null
if (index >= realcount) {
view = mAdapter.getView((realcount - 1), null, null)
view.setVisibility(View.INVISIBLE)
} else {
view = mAdapter.getView(index, null, null)
}
if (index % column == 0) {// 整行
tableRow = new TableRow(mContext)
}
if (tableRow != null) {//添加每一个Item
tableRow.addView(view)
}
if (index % column == 0) {// 整行
addView(tableRow, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT))
}
}
}
三、使用和ListView的方式基本一样
public class MainActivity extends Activity {
private List<Map<String, Object>>dataList
private TableBorderLayout layTable
private String[] datas = new String[] { "疯狂", "个性", "张扬", "抖擞", "加油", "奋斗",
"努力", "精神" }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initViews()
loadDatas()
}
private void initViews() {
layTable = (TableBorderLayout) findViewById(R.id.layTable)
}
private void loadDatas() {
dataList = new ArrayList<Map<String, Object>>()
Map<String, Object>item = null
for (int i = 0i <datas.lengthi++) {
item = new HashMap<String, Object>()
item.put("Title", datas[i])
dataList.add(item)
}
layTable.setAdapter(new MyAdapter(this, dataList))
}
}
今天也遇上这个问题,在点击DrawerLayout中的空白处的时候,底部的content会获得事件。。
网上大多数DrawerLayout的实例都是跟google一样,一个listview,所以listview会获得焦点,事件就不会传递了。但是我是用的include加载的布局,所以才会出现这个情况。
解决方法是:在include进的那个布局里面,添加clickable=true。
javaAndroidStudio将support库迁移或改成Androidx
孤星泪@@
原创
关注
1点赞·1909人阅读
方法一(推荐此方法):
1.在AndroidStudio顶部tab中找到Refator中选择Migrate to AnadroidX...,如下图:
2.然后按步骤一步步默认,如下图:
3.最后等待如上Do Refactor 结束。build.gradle 中依赖库自动变为androidx...及项目中的类及xml中相关自动变为androidx相关,如下图:
4. 需要注意的是自动替换有些包名可能不对,需要全局替换。例如recyclerview、drawlayout、viewpager、tablayout、ConstraintLayout需要全局替换成正确的包名(包名对应表参照 :support迁移到androidx的对照support To androidx)。然后运行项目,直到编译成功。
5.对Androidx混淆处理:在混淆文件proguard-rules加入如下:
-keep class com.google.android.material.** {*}
-keep class androidx.** {*}
-keep public class * extends androidx.**
-keep interface androidx.** {*}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
以上则算完成了整个迁移。
方法二(不推荐,简单描述下):
1.在项目最外层的gradle.properites中添加如下两行代码,然后同步项目:
android.useAndroidX=true
android.enableJetifier=true
大概解释下上面两行代码
android.useAndroidX=true 表示当前项目启用 AndroidX
android.enableJetifier=true 表示将依赖包也迁移到AndroidX
2.等待同步完成后会报错:需要手动修改报错的地方,例如build.gradle中需要把手动把support库修改为androidx库,java文件中及xml中把对应的类修改为对应的Androidx类。
如下图:
也要完成方法一中的4,5步骤,完成了整个迁移。
最后放一个support迁移到androidx的对照support To androidx
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)