package com.succulent.wztxy.succulentplants.common.util;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.succulent.wztxy.succulentplants.R;
public class MyOneLineView extends LinearLayout {
/**
* 上下分割线,默认隐藏上面分割线
*/
private View dividerTop, dividerBottom;
/**
* 最外层容器
*/
private LinearLayout llRoot;
/**
* 最左边的Icon
*/
private ImageView ivLeftIcon;
/**
* 中间的文字内容
*/
private TextView tvTextContent;
/**
* 中间的输入框
*/
private EditText editContent;
/**
* 右边的文字
*/
private TextView tvRightText;
/**
* 右边的icon 通常是箭头
*/
private ImageView ivRightIcon;
/**
* 整个一行被点击
*/
public static interface OnRootClickListener {
void onRootClick(View view);
}
/**
* 右边箭头的点击事件
*/
public static interface OnArrowClickListener {
void onArrowClick(View view);
}
public MyOneLineView(Context context) {
super(context);
}
public MyOneLineView(Context context, AttributeSet attrs) {
super(context, attrs);
}
// private void initDefault(Context context, AttributeSet attrs) {
// TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyOneLineView);
// String style = array.getString(R.styleable.MyOneLineView_style);
// switch (style)
//
// }
/**
* 初始化各个控件
*/
public MyOneLineView init() {
LayoutInflater.from(getContext()).inflate(R.layout.item_mine, this, true);
llRoot = findViewById(R.id.ll_root);
dividerTop = findViewById(R.id.divider_top);
dividerBottom = findViewById(R.id.divider_bottom);
ivLeftIcon = findViewById(R.id.iv_left_icon);
tvTextContent = findViewById(R.id.tv_text_content);
editContent = findViewById(R.id.edit_content);
tvRightText = findViewById(R.id.tv_right_text);
ivRightIcon = findViewById(R.id.iv_right_icon);
return this;
}
/**
* 文字 + 箭头
*
* @param textContent
* @return
*/
public MyOneLineView init(String textContent) {
init();
setTextContent(textContent);
showEdit(false);
setRightText("");
showLeftIcon(false);
return this;
}
/**
* 默认情况下的样子 ic_icon + 文字 + 右箭头 + 下分割线
*
* @param iconRes icon图片
* @param textContent 文字内容
*/
public MyOneLineView init(int iconRes, String textContent) {
init();
showDivider(false, true);
setLeftIcon(iconRes);
setTextContent(textContent);
showEdit(false);
setRightText("");
showArrow(true);
return this;
}
/**
* 我的页面每一行 文字 + 右箭头左边的文字(显示/不显示)+ 下分割线
*
* @param textRight 右箭头左边的文字
* @param textContent 文字内容
*/
public MyOneLineView initDoubleText(int textContentResId, int textRightResId) {
init();
setTextContent(getResources().getString(textContentResId));
setRightText(getResources().getString(textRightResId));
setLeftIconSize(0, 0);
setRootPadding(0,15,10,10);
showEdit(false);
showArrow(false);
return this;
}
/**
* 我的页面每一行 ic_icon + 文字 + 右箭头(显示/不显示) + 右箭头左边的文字(显示/不显示)+ 下分割线
*
* @param iconRes icon图片
* @param textContent 文字内容
*/
public MyOneLineView initMine(int iconRes, String textContent, String textRight, boolean showArrow) {
init(iconRes, textContent);
setRightText(textRight);
showArrow(showArrow);
return this;
}
public MyOneLineView initEditView(int textEditResId, int textHintResId) {
init();
showLeftIcon(false);
setLeftIconSize(0, 0);
tvTextContent.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.0f));
setIvRightIcon(R.drawable.ic_clear_24dp);
editContent.setText(getResources().getString(textEditResId));
editContent.setHint(getResources().getString(textHintResId));
editContent.setSelection(getResources().getString(textEditResId).length());
setRootPadding(15,15,10,10);
showEdit(true);
return this;
}
public MyOneLineView initEditView(int textEditResId, int textHintResId, int minRow) {
init();
showLeftIcon(false);
setLeftIconSize(0, 0);
tvTextContent.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.0f));
setIvRightIcon(R.drawable.ic_clear_24dp);
editContent.setText(getResources().getString(textEditResId));
editContent.setHint(getResources().getString(textHintResId));
editContent.setSelection(getResources().getString(textEditResId).length());
editContent.setMinLines(minRow);
editContent.setGravity(Gravity.TOP);
showArrow(false);
setRootPadding(15,15,10,10);
showEdit(true);
return this;
}
/**
* ic_icon + 文字 + edit + 下分割线
*
* @return
*/
public MyOneLineView initItemWidthEdit(int iconRes, String textContent, String editHint) {
init(iconRes, textContent);
showEdit(true);
setEditHint(editHint);
showArrow(false);
return this;
}
//---------------------下面是对每个部分的一些设置 上面是应用中常用场景封装-----------------------//
/**
* 设置root的paddingTop 与 PaddingBottom 从而控制整体的行高
* paddingLeft 与 paddingRight 保持默认 20dp
*/
public MyOneLineView setRootPaddingTopBottom(int paddintTop, int paddintBottom) {
llRoot.setPadding(DensityUtils.dp2px(getContext(), 20),
DensityUtils.dp2px(getContext(), paddintTop),
DensityUtils.dp2px(getContext(), 20),
DensityUtils.dp2px(getContext(), paddintBottom));
return this;
}
/**
* 设置root的paddingLeft 与 PaddingRight 从而控制整体的行高
* <p>
* paddingTop 与 paddingBottom 保持默认 15dp
*/
public MyOneLineView setRootPaddingLeftRight(int paddintLeft, int paddintRight) {
llRoot.setPadding(DensityUtils.dp2px(getContext(), paddintLeft),
DensityUtils.dp2px(getContext(), 15),
DensityUtils.dp2px(getContext(), paddintRight),
DensityUtils.dp2px(getContext(), 15));
return this;
}
public MyOneLineView setRootPadding(int paddintLeft, int paddintRight, int paddintTop, int paddintBottom) {
llRoot.setPadding(DensityUtils.dp2px(getContext(), paddintLeft),
DensityUtils.dp2px(getContext(), paddintTop),
DensityUtils.dp2px(getContext(), paddintRight),
DensityUtils.dp2px(getContext(), paddintBottom));
return this;
}
/**
* 设置上下分割线的显示情况
*
* @return
*/
public MyOneLineView showDivider(Boolean showDividerTop, Boolean showDivderBottom) {
if (showDividerTop) {
dividerTop.setVisibility(VISIBLE);
} else {
dividerTop.setVisibility(GONE);
}
if (showDivderBottom) {
dividerBottom.setVisibility(VISIBLE);
} else {
dividerBot
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
安卓移动开发课程设计/Android期末大作业,多肉图鉴app - 运行中有什么问题可以私聊博主,本人高级安卓工程师,主页置顶有常见爆红解决的方法,以及更多代码项目 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
安卓移动开发课程设计/Android期末大作业,多肉图鉴app (158个子文件)
gradlew.bat 2KB
.gitignore 176B
.gitignore 7B
build.gradle 2KB
build.gradle 831B
settings.gradle 15B
gradlew 5KB
gradle-wrapper.jar 53KB
MyOneLineView.java 15KB
BlossomFragment.java 7KB
MainActivity.java 6KB
SearchActivity.java 5KB
CategroyArticleActivity.java 5KB
HandbookFragment.java 5KB
GenusActivity.java 4KB
MineFragment.java 4KB
SpeciesActivity.java 4KB
MyContributionActivity.java 4KB
AvatarActivity.java 3KB
ArticleItem.java 3KB
PlantCategoryActivity.java 3KB
FamilyActivity.java 3KB
ChangeGenderActivity.java 2KB
InformationActivity.java 2KB
SearchFragment.java 2KB
ArticleActivity.java 2KB
RoastActivity.java 2KB
DensityUtils.java 2KB
ChangeIntroductionActivity.java 2KB
ChangeNicknameActivity.java 2KB
SucculentSpecies.java 2KB
BaseActivity.java 1KB
BaseFragment.java 1KB
RecognitionHistoryActivity.java 1KB
ParterreFragment.java 1KB
NoScrollViewPager.java 1KB
StreamUtils.java 1KB
BlossomArticleAdapter.java 1KB
SucculentFamily.java 1KB
GenusItemAdapter.java 1KB
FamilyItemAdapter.java 1KB
SucculentGenus.java 1KB
SpeciesItemAdapter.java 1KB
InReviewFragment.java 974B
NotPassFragment.java 973B
PassFragment.java 971B
ExampleInstrumentedTest.java 754B
HttpUtil.java 484B
GlideImageLoader.java 455B
ExampleUnitTest.java 396B
ChangeAvatarActivity.java 201B
species.json 184KB
genus.json 13KB
family.json 2KB
avatar1.png 120KB
ic_launcher-web.png 21KB
ic_launcher_round.png 12KB
ic_launcher_round.png 9KB
ic_launcher_foreground.png 7KB
ic_launcher.png 6KB
ic_launcher_foreground.png 5KB
ic_launcher_round.png 5KB
ic_launcher.png 4KB
ic_launcher_round.png 4KB
ic_launcher_foreground.png 3KB
ic_launcher.png 3KB
ic_launcher_foreground.png 2KB
ic_launcher_round.png 2KB
ic_launcher.png 2KB
ic_launcher_foreground.png 1KB
homepage_right_arrow.png 1KB
ic_launcher.png 1KB
proguard-rules.pro 751B
gradle.properties 727B
gradle-wrapper.properties 200B
fragment_handbook.xml 9KB
fragment_parterre.xml 9KB
ic_leaves_36dp.xml 7KB
ic_trees_36dp.xml 6KB
item_blossom_bar.xml 6KB
ic_flower1_36dp.xml 5KB
ic_growth_36dp.xml 5KB
ic_launcher_background.xml 5KB
activity_plant_category.xml 5KB
ic_plant2_24dp.xml 4KB
ic_plant5_24dp.xml 4KB
ic_parterre_24dp.xml 4KB
item_article.xml 3KB
assetWizardSettings.xml 3KB
ic_plant3_24dp.xml 3KB
ic_plant_36dp.xml 3KB
fragment_blossom.xml 3KB
ic_blossom_24dp.xml 3KB
item_mine.xml 3KB
ic_plant8_24dp.xml 3KB
ic_wiki2.xml 3KB
ic_plant4_24dp.xml 3KB
strings.xml 2KB
AndroidManifest.xml 2KB
fragment_mine.xml 2KB
共 158 条
- 1
- 2
资源评论
- 恶名小鱼2024-03-20运行不了,会报错
Android安卓科研室
- 粉丝: 1515
- 资源: 1165
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功