android 怎么绘制表格边框

android 怎么绘制表格边框,第1张

一、表格最蛋疼的就是那根线,网上有个很好的方法,大概思路是这样的:

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。

java

AndroidStudio将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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7897935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存