Giter VIP home page Giter VIP logo

xuexiangjys / xui Goto Github PK

View Code? Open in Web Editor NEW
4.7K 87.0 816.0 280.18 MB

💍A simple and elegant Android native UI framework, free your hands! (一个简洁而优雅的Android原生UI框架,解放你的双手!)

Home Page: https://xuexiangjys.github.io/XUI/

License: Apache License 2.0

Java 99.53% HTML 0.31% JavaScript 0.15% CSS 0.01%
android-ui xui styles ui-components android theme x-library

xui's Introduction

Banner

XUI

api Issue Star

A simple and elegant Android native UI framework, free your hands! Click on the instruction document and experience it!

Covers most of the UI components:TextView、Button、EditText、ImageView、Spinner、Picker、Dialog、PopupWindow、ProgressBar、LoadingView、StateLayout、FlowLayout、Switch、Actionbar、TabBar、Banner、GuideView、BadgeView、MarqueeView、WebView、SearchView...etc. A series of components and colorful style themes。

Please read 【wisdom of asking questions】 before raising the issue and strictly follow the issue template fill in and save everyone's time.

Please read the instruction document carefully before use, important things are to be repeated for three time!!!

please read the instruction document carefully before use, important things are to be repeated for three time!!!

Please read the instruction document carefully before use, important things are to be repeated for three time!!!

About me

WeChat public number juejin zhihu CSDN jianshu segmentfault bilibili toutiao
我的Android开源之旅 Click me Click me Click me Click me Click me Click me Click me

Rapid integration of X-Library

In order to facilitate the rapid integration of X-Library, I provide a template project for your reference: https://github.com/xuexiangjys/TemplateAppProject

In addition, I have also produced several video tutorials for your reference.


Features

  • Simple and elegant,the total size of the project library is less than 1M (about 644k after packaging).

  • Rich components,provides the vast majority of our developers in common functional components.

  • Easy to use,in order to facilitate rapid development and improve development efficiency, the API is optimized to provide one click access.

  • Uniform style,the framework provides a series of unified styles to make the UI look beautiful and harmonious.

  • High compatibility,the framework also provides three different sizes of device styles (4.5 inch, 7 inch and 10 inch) and is compatible with Android 17 at least, which makes UI compatibility stronger.

  • Strong expansibility,each component provides rich properties and style APIs, and different styles of UI can be built by setting different style properties.

Stargazers over time

Stargazers over time


Usage

Before you consider using XUI, you must be clear that this framework provides a whole set of UI solutions. If you just want to use a few of them, you don't need to introduce such a huge UI library. You can find better component libraries on GitHub. If you want to have a customized, unified UI overall solution, then you can continue to look!

Add gradle dependency

1.In the project root directory build.gradle:

allprojects {
     repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

2.Then add in the dependencies of build.gradle of the application project (usually app):

dependencies {
  ...
  //androidx project
  implementation 'com.github.xuexiangjys:XUI:1.2.1'

  implementation 'androidx.appcompat:appcompat:1.3.1'
  implementation 'androidx.recyclerview:recyclerview:1.2.1'
  implementation 'com.google.android.material:material:1.4.0'
  implementation 'com.github.bumptech.glide:glide:4.12.0'
}

【Note】 If your project does not currently use androidx, please use the following configuration:

dependencies {
  ...
  //support project
  implementation 'com.github.xuexiangjys:XUI:1.0.9-support'

  implementation 'com.android.support:appcompat-v7:28.0.0'
  implementation 'com.android.support:recyclerview-v7:28.0.0'
  implementation 'com.android.support:design:28.0.0'
  implementation 'com.github.bumptech.glide:glide:4.8.0'
}

Initialization

1.Modify the basic theme of the application (required)

The basic theme of the application must be set, otherwise the component will not work normally! It is very important to ensure that the theme of all windows using XUI components is a subclass of XUITheme!!!

Basic topic type:

  • Large flat plate(10 inches, 240dpi, 1920*1200):XUITheme.Tablet.Big

  • Small plate(7 inches, 320dpi, 1920*1200):XUITheme.Tablet.Small

  • Mobile phone(4.5 inches, 320dpi, 720*1280):XUITheme.Phone

<style name="AppTheme" parent="XUITheme.Phone">

    <!-- Customize your own theme style -->

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

</style>

Of course, you can also call the following code at the beginning of the Activity to set the theme dynamically.

@Override
protected void onCreate(Bundle savedInstanceState) {
    XUI.initTheme(this);
    super.onCreate(savedInstanceState);
    ...
}

2.Adjust font library (omit if there is no requirement for font)

(1)Set the font library path you need to modify (under assets)

// Set the default font to Chinese line Kai, write your font library here
XUI.getInstance().initFontStyle("fonts/hwxk.ttf");

(2)Add the following code to the basic activity of the project to inject fonts

Note: after version 1.1.4, use the following settings for injection

@Override
protected void attachBaseContext(Context newBase) {
    // Injection font
    super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase));
}

Note: versions 1.1.3 and earlier use the following settings for injection

@Override
protected void attachBaseContext(Context newBase) {
    // Injection font
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

Demonstration

Screenshot

1_splash.png2_main.png3_about.png

4_menu.png5_dialog.png6_bottom_dialog.png

7_picker.png8_webview.png9_flowlayout.png

10_ninegrid.png11_radius_imageview.png12_badge_view.png

13_tabview.png14_citypicker.png15_refresh_layout.png

16_spinner.png

Demo download

The demo program is about 18M (mainly because the demo integrates a small video shooting library, which is about 13M, while XUI library is only 644k in size). The project is relatively large, and dandelion is recommended to download.

xui_size.png

Pgyer Download

Pgyer Download password: xuexiangjys

Pgyer

download_pugongying.png

Github Download

Github

download_github.png

Contribution

Due to my limited energy, you are welcome to actively contribute your idea. You will have the opportunity to participate in the maintenance of star over 1000 projects on GitHub and enhance your industry influence!

Code contribution requirements:

  • Please keep the existing code style, not according to your habits. Please comply with Alibaba java coding specification.

  • Just modify the code you are sure need to be optimized, not all the different code from your ideas.

  • Before launching a pull request, you should test your commit code adequately.

  • Please commit new code to the dev branch instead of the master branch.

Thanks

Sponsor

Your support is the driving force of my maintenance. I will list the list of all the reward personnel at the bottom as the voucher. Please leave the notes of the support items before rewarding!

pay.png

Thank you for your sponsorship:

Name Money Platform
C*y 1¥ WeChat
*流 1¥ WeChat
*声 50¥ WeChat
*宇涛 5¥ Alipay
*事 10¥ WeChat
优*1 168¥ WeChat
*、 20¥ WeChat
*钰晗 6¥ Alipay
*娜 3¥ WeChat
*米 20¥ WeChat
*忘 10¥ WeChat
*清红 1¥ Alipay
*口 5¥ WeChat
* 10.24¥ WeChat
*俊耀 100¥ Alipay
*俊杰 1¥ Alipay
*鸥 10.24¥ WeChat
*云 20.21¥ Alipay
*钰晗 66¥ Alipay
*杰柱 10¥ Alipay
*毛 6.66¥ WeChat
*凯 10¥ WeChat
r*o 8.88¥ WeChat
T*8 7.77¥ WeChat
v*d 20¥ WeChat
B*G 1¥ WeChat
*舞 10¥ WeChat
*肉 2¥ WeChat
*拖 12.12¥ WeChat
*鱼 20¥ WeChat
*明 20¥ WeChat
*化 8¥ WeChat
*攀 16.80¥ Alipay
**航 10¥ Alipay
**飞 10.24¥ Alipay
*瑟 1¥ WeChat
*原 10.24¥ Alipay
*越 10.24¥ WeChat
**俊 80¥ Alipay
*尋 10.24¥ WeChat
爱生活 100¥ QQ
*茶 100¥ WeChat
*头 2¥ WeChat
*噜 10.99¥ WeChat
Wm 10¥ WeChat
*谷 10¥ WeChat
*望 5¥ WeChat
J*o 10.24¥ WeChat
*休 10.24¥ WeChat
**俊 80¥ Alipay
**伟 1.1¥ Alipay
**云 5¥ Alipay
*航 3¥ Alipay
*维 5¥ WeChat
*鑫 188.88¥ Alipay
*玉 10¥ Alipay
**贺 100¥ Alipay
**伟 65¥ Alipay
*G 1¥ WeChat
M*u 10.24¥ WeChat
S*m 10.24¥ WeChat
T*g 15¥ WeChat
*边 10.24¥ WeChat
*寻 20.48¥ WeChat
*凉 10.24¥ WeChat
S*y 10.24¥ WeChat
M*n 1¥ WeChat
J*e 10.24¥ WeChat
*、 10.24¥ WeChat
禹*) 1¥ WeChat
X*? 18.88¥ WeChat
*事 5¥ WeChat
*之 10¥ WeChat
*安 18.88¥ WeChat
*🎵 10.24¥ WeChat
*👔 10¥ WeChat
*洲 10¥ WeChat

Contact

xui's People

Contributors

xuexiangjys avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xui's Issues

MaterialSpinner 设置完 Adapter 复写 getItemText 显示不对;

wifiSpinner.setAdapter(new MaterialSpinnerAdapter<SnapShotModel.WifiBean>(getActivity(),new ArrayList<>()){
            @Override public String getItemText(int position) {
                return getItem(position).getName();
            }
        });

之后调用

wifiSpinner.setItems(wifiBeans);

不能显示正常; 还是显示对象的toString方法

华为mate10使用输入框弹窗,经常出现键盘弹不出来。

依赖版本: implementation 'com.github.xuexiangjys:XUI:1.1.3'
在Activity的按钮点击弹出输入框,华为mate10经常出现键盘弹不出来,多次点击才可以弹出来。

`new MaterialDialog.Builder(this)
.iconRes(R.drawable.icon_tip)
.title("提示")
.content("哈哈哈哈哈")
.inputType(
InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
| InputType.TYPE_TEXT_FLAG_CAP_WORDS)
.input("哈哈哈哈哈哈哈哈",
"",
false, new MaterialDialog.InputCallback() {
@OverRide
public void onInput(@nonnull MaterialDialog dialog, CharSequence input) {

                        }
                    })
            .positiveText("确定")
            .negativeText("取消")
            .onPositive(((dialog, which) -> {
                try {
                    registerAccount(dialog);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }))
            .onNegative(new MaterialDialog.SingleButtonCallback() {
                @Override
                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {

                }
            })
            .cancelable(false)
            .show();`

使用XUI的APP产品信息收集

如果你的公司或者产品正在使用XUI,请在下面回复进行反馈,反馈内容如下:

  • 产品名字(可附上产品链接)
  • 公司名字(可无)

感谢你们的反馈,这些反馈会给我更大的动力和热情去维护项目.

国际化问题

版本:1.0.8/1.0.9
国际化语言,应用内手动切换,SmartFreshLayout必须应用重启才能重新渲染Header和Footer,这个问题怎么解决,SmartFreshLayout(看着是1.1.0版本,XUI引用1.1.5超前了?) issues 也看了,无法解决问题;

引入StatefulLayout类时找不到R文件

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。

问题描述
对问题进行清晰而简明的描述,把握问题的关键点。

如何重现
重现的步骤:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

期望的效果
对你期望的效果进行清晰而简明的描述。

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. 华为P20]
  • Android版本: [e.g. Android 7.0]
  • 设备型号 [e.g. ]
  • 系统版本(手机厂商定制rom)

附加信息
在此处添加任何有关该问题的任何其他说明。

Dialog的crash问题

com.afollestad.materialdialogs.internal.MDRootLayout cannot be cast to com.xuexiang.xui.widget.dialog.materialdialog.internal.MDRootLayout
image

bannerlayout不能无限轮播

bannerlayout自动轮播到最后一个之后就不再滚动了
<com.xuexiang.xui.widget.banner.recycler.BannerLayout
android:id="@+id/frg_main_bannerLayout"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="10dp"
app:bl_autoPlaying="true"
app:bl_centerScale="1.154"
app:bl_itemSpace="0dp"
app:bl_moveSpeed="1.8"
app:bl_showIndicator="false" />

关于CountDownButton倒计时控件的一些问题

问题描述:
在布局文件中使用CountDownButton控件,在代码中设置改控件的监听,需求是这样的,点击CountDownButton弹出一个底部对话框,此时不进行倒计时,弹出对话框后需要输入图形验证码上的数字,验证通过后开始倒计时.我试过setEnableCountDown方法都无济于事,而startCountDown()方法开启倒计时确是私有的,请问我该如何实现呢

seekBar 在滚动界面,如recycleView里面滑动时,滚动界面会滚动

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。
3.参考常见问题,可以解决你出现的绝大多数问题!

如果以上都不能解决你的问题,那么请按照以下说明仔细填写信息,这里需要说明的是:不符合填写要求的issue一律不予理会,希望这样能节约大家的时间!


**问题描述(必填)seekBar 在滚动界面,如recycleView里面滑动时,滚动界面会滚动,体验不好
对问题进行清晰而简明的描述,把握问题的关键点。

**使用的XUI版本(必填)1.1.4

**如何重现(必填)应重构 dispatchTouchEvent 方法,在滑动时调用
parent.requestDisallowInterceptTouchEvent(true)不让父组件获取焦点。

重现的步骤:
override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
if (event?.action == MotionEvent.ACTION_MOVE) {
parent.requestDisallowInterceptTouchEvent(true)
} else {
parent.requestDisallowInterceptTouchEvent(false)
}
return super.dispatchTouchEvent(event)
}

期望的效果
对你期望的效果进行清晰而简明的描述。

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. 华为P20]
  • Android版本: [e.g. Android 7.0]
  • 设备型号 [e.g. ]
  • 系统版本(手机厂商定制rom)

附加信息
在此处添加任何有关该问题的任何其他说明。

Android resource linking failed

问题描述
升级Android Studio 3.6.0(Gradle 5.6.4)后,部分使用XUIGroupListView的项目在编译时出现Android resource linking failed,错误信息:(GRADLE_USER_HOME)\caches\transforms-2\files-2.1\4f4b8f77519e9f06c86146204a335670\jetified-XUI-1.1.2\res\values\values.xml:2647:5-2657:25: AAPT: error: resource attr/xui_orientation (aka com.arvinzjc.xshielder:attr/xui_orientation) not found.

使用的XUI版本
1.1.2

附加信息
测试发现,出现问题的项目均是Android Gradle Plugin Version==3.6.0, 改为3.5.3就没问题

未适配4.4的系统,添加AppCompatDelegate.setCompatVectorFromResourcesEnabled() 还是报错

    android.content.res.Resources$NotFoundException: File res/drawable/md_btn_selector.xml from drawable resource ID #0x7f08008e. If the resource you are trying to use is a vector resource, you may be referencing it in an unsupported way. See AppCompatDelegate.setCompatVectorFromResourcesEnabled() for more info.
        at android.content.res.Resources.loadDrawable(Resources.java:2096)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
        at com.xuexiang.xui.utils.ThemeUtils.resolveDrawable(ThemeUtils.java:172)
        at com.xuexiang.xui.utils.ThemeUtils.resolveDrawable(ThemeUtils.java:163)
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.getButtonSelector(MaterialDialog.java:382)
        at com.xuexiang.xui.widget.dialog.materialdialog.DialogInit.init(DialogInit.java:319)
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.<init>(MaterialDialog.java:119)
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog$Builder.build(MaterialDialog.java:2444)
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog$Builder.show(MaterialDialog.java:2449)
        at com.itzyf.pokemondata.activity.PanelDetailActivity.showContractDialog(PanelDetailActivity.kt:130)
        at com.itzyf.pokemondata.activity.PanelDetailActivity.access$showContractDialog(PanelDetailActivity.kt:20)
        at com.itzyf.pokemondata.activity.PanelDetailActivity$handlerActivity$5.onClick(PanelDetailActivity.kt:76)
        at android.view.View.performClick(View.java:4438)
        at android.view.View$PerformClick.run(View.java:18422)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5050)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/md_btn_selected.xml from drawable resource ID #0x7f08008c
        at android.content.res.Resources.loadDrawable(Resources.java:2096)
        at android.content.res.Resources.getDrawable(Resources.java:700)
        at android.support.v7.widget.VectorEnabledTintResources.superGetDrawable(VectorEnabledTintResources.java:75)
        at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:432)
        at android.support.v7.widget.VectorEnabledTintResources.getDrawable(VectorEnabledTintResources.java:68)
        at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:176)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
        at android.content.res.Resources.loadDrawable(Resources.java:2092)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
        at com.xuexiang.xui.utils.ThemeUtils.resolveDrawable(ThemeUtils.java:172) 
        at com.xuexiang.xui.utils.ThemeUtils.resolveDrawable(ThemeUtils.java:163) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.getButtonSelector(MaterialDialog.java:382) 
        at com.xuexiang.xui.widget.dialog.materialdialog.DialogInit.init(DialogInit.java:319) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.<init>(MaterialDialog.java:119) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog$Builder.build(MaterialDialog.java:2444) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog$Builder.show(MaterialDialog.java:2449) 
        at com.itzyf.pokemondata.activity.PanelDetailActivity.showContractDialog(PanelDetailActivity.kt:130) 
        at com.itzyf.pokemondata.activity.PanelDetailActivity.access$showContractDialog(PanelDetailActivity.kt:20) 
        at com.itzyf.pokemondata.activity.PanelDetailActivity$handlerActivity$5.onClick(PanelDetailActivity.kt:76) 
        at android.view.View.performClick(View.java:4438) 
        at android.view.View$PerformClick.run(View.java:18422) 
        at android.os.Handler.handleCallback(Handler.java:733) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5050) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596) 
        at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x2
        at android.content.res.TypedArray.getDimensionPixelOffset(TypedArray.java:431)
        at android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:1019)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
        at android.graphics.drawable.InsetDrawable.inflate(InsetDrawable.java:113)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
        at android.content.res.Resources.loadDrawable(Resources.java:2092)
        at android.content.res.Resources.getDrawable(Resources.java:700) 
        at android.support.v7.widget.VectorEnabledTintResources.superGetDrawable(VectorEnabledTintResources.java:75) 
        at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:432) 
        at android.support.v7.widget.VectorEnabledTintResources.getDrawable(VectorEnabledTintResources.java:68) 
        at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:176) 
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937) 
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877) 
        at android.content.res.Resources.loadDrawable(Resources.java:2092) 
        at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
        at com.xuexiang.xui.utils.ThemeUtils.resolveDrawable(ThemeUtils.java:172) 
        at com.xuexiang.xui.utils.ThemeUtils.resolveDrawable(ThemeUtils.java:163) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.getButtonSelector(MaterialDialog.java:382) 
        at com.xuexiang.xui.widget.dialog.materialdialog.DialogInit.init(DialogInit.java:319) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.<init>(MaterialDialog.java:119) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog$Builder.build(MaterialDialog.java:2444) 
        at com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog$Builder.show(MaterialDialog.java:2449) 
        at com.itzyf.pokemondata.activity.PanelDetailActivity.showContractDialog(PanelDetailActivity.kt:130) 
        at com.itzyf.pokemondata.activity.PanelDetailActivity.access$showContractDialog(PanelDetailActivity.kt:20) 
        at com.itzyf.pokemondata.activity.PanelDetailActivity$handlerActivity$5.onClick(PanelDetailActivity.kt:76) 
        at android.view.View.performClick(View.java:4438) 
        at android.view.View$PerformClick.run(View.java:18422) 
        at android.os.Handler.handleCallback(Handler.java:733) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5050) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596) 
        at dalvik.system.NativeStart.main(Native Method) 

错误: 找不到符号 符号: 类 AppPageConfig 位置: 程序包 com.xuexiang.xpage

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。
3.参考常见问题,可以解决你出现的绝大多数问题!

如果以上都不能解决你的问题,那么请按照以下说明仔细填写信息,这里需要说明的是:不符合填写要求的issue一律不予理会,希望这样能节约大家的时间!


问题描述(必填)
对问题进行清晰而简明的描述,把握问题的关键点。

使用的XUI版本(必填)

如何重现(必填)
重现的步骤:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

期望的效果
对你期望的效果进行清晰而简明的描述。

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. 华为P20]
  • Android版本: [e.g. Android 7.0]
  • 设备型号 [e.g. ]
  • 系统版本(手机厂商定制rom)

附加信息
在此处添加任何有关该问题的任何其他说明。

修改主题无效,看不到效果

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。

问题描述
对问题进行清晰而简明的描述,把握问题的关键点。

如何重现
重现的步骤:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

期望的效果
对你期望的效果进行清晰而简明的描述。

截图

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. genymotion]
  • Android版本: [e.g. Android 8.0 api26]

附加信息
修改AppTheme无效
<style name="AppTheme" parent="XUITheme.Phone"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="xui_config_color_background">#44ff0000</item> <item name="xui_actionbar_color">@color/colorAccent</item> </style>

1.1.5 有个bug

com.xuexiang.xui.widget.flowlayout.FlowLayout#onMeasure 方法里面 setMeasuredDimension 位置错了
应该在for循环之后

leakcanary-android:1.6.3依赖加载不上

12:55 Gradle sync failed: Could not determine artifacts for com.squareup.leakcanary:leakcanary-android:1.6.3: Skipped due to earlier error (1 m 41 s 770 ms)
同步了好多次还是下载不上

遇到问题如何解决?

遇到问题如何解决?

这里我简单提供几个解决问题的方法:

a

a

XUI 提示 AAPT: error: resource attr/xui_orientation not found.

implementation 'com.github.xuexiangjys:XUI:1.1.2‘

C:\Users\empty.gradle\caches\transforms-2\files-2.1\e13f4ee319bdd0af9a56576eb0ab6262\jetified-XUI-1.1.1\res\values\values.xml:2462:5-2472:25: AAPT: error: resource attr/xui_orientation (aka cc.vc22.flowto:attr/xui_orientation) not found.

使用AS 3.6,之前在未升级之前可用,但升级之后中,就报这个错误。

按钮文字不居中,位置稍微偏下一点

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [联想z5 pro]
  • Android版本: [Android 8.1.0]
  • 系统版本(zui10.0)

按钮文字不居中,位置稍微偏下一点
image

MaterialEditText显示清除不能居中

在MaterialEditText组件中met_iconLeft引用本地资源后不显示
然后就在MaterialEditText组件中添加 drawableLeft属性引用本地资源后 清除按钮无法居中

图片选择模块,预览无法选中图片,一直转圈,无法回调

问题描述(必填)
进入预览界面点击右上角选中该图片,然后点击右下角已完成按钮,会一直显示加载框无回调,不会关闭选择界面,也无法选中图片

使用的XUI版本(必填)
com.github.xuexiangjys.PictureSelector:picture-core:1.0.3

截图
RTX截图未命名

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: 华为p30 genymotion模拟器
  • Android版本: [e.g. Android 7.0]

附加信息
进入预览界面点击右上角选中该图片,然后点击右下角已完成按钮,会一直显示加载框无回调,不会关闭选择界面

这个Tabs页怎么这么难用,想修改个自己定义fragment太费劲了

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。

问题描述
对问题进行清晰而简明的描述,把握问题的关键点。

如何重现
重现的步骤:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

期望的效果
对你期望的效果进行清晰而简明的描述。

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. 华为P20]
  • Android版本: [e.g. Android 7.0]
  • 设备型号 [e.g. ]
  • 系统版本(手机厂商定制rom)

附加信息
在此处添加任何有关该问题的任何其他说明。

AppPageConfig.getInstance().getComponents();

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。
3.参考常见问题,可以解决你出现的绝大多数问题!

如果以上都不能解决你的问题,那么请按照以下说明仔细填写信息,这里需要说明的是:不符合填写要求的issue一律不予理会,希望这样能节约大家的时间!


问题描述(必填)
对问题进行清晰而简明的描述,把握问题的关键点。

使用的XUI版本(必填)

如何重现(必填)
重现的步骤:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

期望的效果
对你期望的效果进行清晰而简明的描述。

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. 华为P20]
  • Android版本: [e.g. Android 7.0]
  • 设备型号 [e.g. ]
  • 系统版本(手机厂商定制rom)

附加信息
在此处添加任何有关该问题的任何其他说明。

TabBar使用viewpager添加recycleview的点击事件无效

问题描述
使用TabBar的TabSegment组建配合ViewPager使用,viewpager中使用recycleview加载列表。增加recycleview的点击事件不管用

如何重现
重现的步骤:

  1. xml中使用TabSegment
  2. 定义Viewpager
  3. new 一个recycleview加入到viewpager适配器中
  4. 增加recycleview的adapter的点击事件不管用

期望的效果
recycleview的点击事件管用

截图
public class MessageFragment extends BaseFragment {

@BindView(R.id.tabSegment)
TabSegment tabSegment;
@BindView(R.id.mViewPager)
ViewPager viewPager;
MessageAdapter adapter;
RecyclerView recyclerView;

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.fragment_message);
    super.onCreate(savedInstanceState);

}

@Override
public void assignViews(View rootView) {
    ButterKnife.bind(this, rootView);
    intiView();
}

private PagerAdapter mPagerAdapter = new PagerAdapter() {
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public Object instantiateItem(final ViewGroup container, int position) {

        View view = getPageView(position);
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("sss","s");
            }
        });
        container.addView(view, params);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }


};

private void intiView(){
    viewPager.setAdapter(mPagerAdapter);
    viewPager.setCurrentItem(0,false);
    tabSegment.addTab(new TabSegment.Tab("内部消息"));
    tabSegment.addTab(new TabSegment.Tab("物业消息"));
    tabSegment.addTab(new TabSegment.Tab("政府消息"));
    tabSegment.addTab(new TabSegment.Tab("系统消息"));
    tabSegment.selectTab(0);
    tabSegment.setMode(TabSegment.MODE_FIXED);
    tabSegment.setupWithViewPager(viewPager,false);
    tabSegment.setSmoothScrollingEnabled(true);
    tabSegment.addOnTabSelectedListener(new TabSegment.OnTabSelectedListener() {
        @Override
        public void onTabSelected(int index) {
            if (tabSegment != null) {
                tabSegment.hideSignCountView(index);
            }
        }

        @Override
        public void onTabUnselected(int index) {

        }

        @Override
        public void onTabReselected(int index) {
            if (tabSegment != null) {
                tabSegment.hideSignCountView(index);
            }
        }

        @Override
        public void onDoubleTap(int index) {

        }
    });
}

private View getPageView(int position){
    recyclerView = new RecyclerView(getContext());
    List<MessageModel> list = new ArrayList<>(2);
    switch (position){
        case 0:
            list.add(new MessageModel("标题0","1561087968",1,"内容"));
            list.add(new MessageModel("标题0","1561087968",1,"内容"));
            break;
        case 1:
            list.add(new MessageModel("标题1","1561087968",1,"内容1"));
            list.add(new MessageModel("标题1","1561087968",1,"内容1"));
            break;
        case 2:
            list.add(new MessageModel("标题2","1561087968",1,"内容2"));
            list.add(new MessageModel("标题2","1561087968",1,"内容2"));
            break;
        case 3:
            list.add(new MessageModel("标题3","1561087968",1,"内容3"));
            list.add(new MessageModel("标题3","1561087968",1,"内容3"));
            break;
        default:
            break;
    }
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    adapter = new MessageAdapter(R.layout.message_item,list);
    adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
            Log.d("s","sssssssss");
        }
    });
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setAdapter(adapter);
    return recyclerView;
}

}

设备信息
各种设备都不行

附加信息

项目无法编译运行

  • What went wrong:
    Error snapshotting jar [gradle-api-impldep-4.10.3.jar]

Unexpected end of ZLIB input stream

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

CONFIGURE FAILED in 0s
ERROR: Unexpected end of ZLIB input stream

BUG

跟腾讯的qmui有什么区别

showSimpleBottomSheetList 出错

android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class TextView
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.view.View.inflate(View.java:19790)
at com.xuexiang.xui.widget.dialog.bottomsheet.BottomSheet$BottomListSheetBuilder.buildViews(BottomSheet.java:348)
at com.xuexiang.xui.widget.dialog.bottomsheet.BottomSheet$BottomListSheetBuilder.build(BottomSheet.java:338)
at

你好,请问dialog的按钮颜色怎么修改?

DialogLoader.getInstance().showConfirmDialog(
getContext(),
getString(R.string.dialog_delete_collection),
getString(R.string.dialog_button_positive),
(dialog, which) -> {
mPresenter.deleteUserCollectionById(item.getId(), position);
dialog.dismiss();
},
getString(R.string.dialog_button_cancel),
(dialog, which) -> dialog.dismiss()
);

ExpandableTextView展开高度不正确,造成屏幕上很大的留白

如题

使用的XUI版本(必填)
com.github.xuexiangjys:XUI:1.1.4

如何重现(必填)
重现的步骤:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

期望的效果
对你期望的效果进行清晰而简明的描述。

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。
image
我的解决办法:
image
image

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. 华为P20]
  • Android版本: [e.g. Android 7.0]
  • 设备型号 [e.g. ]
  • 系统版本(手机厂商定制rom)

附加信息
在此处添加任何有关该问题的任何其他说明。

关于DEMO中浏览器示例的地图定位请求权限的问题

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。

问题描述
DEMO中浏览器示例的地图定位永久拒绝定位权限后会一直处于请求权限的状态,无法继续使用。

如何重现
重现的步骤:

  1. Go to '拓展'
  2. Click on 'web浏览器'
  3. Click on ‘地图定位'
  4. 永久拒绝定位权限
  5. See error

期望的效果
弹出定位失败的提示

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [三星 Note 9]
  • Android版本: [Android8.1]
  • 设备型号 [SM-N9600]
  • 系统版本(Samsung Experience 9.5)

附加信息
在此处添加任何有关该问题的任何其他说明。

JPTabBar

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。
3.参考常见问题,可以解决你出现的绝大多数问题!

如果以上都不能解决你的问题,那么请按照以下说明仔细填写信息,这里需要说明的是:不符合填写要求的issue一律不予理会,希望这样能节约大家的时间!


问题描述(必填)
AndroidStudio 提示找不到JPTabBar组件

使用的XUI版本(必填)
implementation 'com.github.xuexiangjys:XUI:1.1.1'

如何重现(必填)
重现的步骤:

  1. 新建布局xml
  2. 创建JPTabBar控件

期望的效果
对你期望的效果进行清晰而简明的描述。

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名: [e.g. 华为P20]
  • Android版本: [e.g. Android 7.0]
  • 设备型号 [e.g. ]
  • 系统版本(手机厂商定制rom)

附加信息
在此处添加任何有关该问题的任何其他说明。

TabSegment的showSignCountView没有背景只有数字

提Bug前需要做的事情

1.如果是集成问题的话,请保证仔细按照如何引用的步骤,一步一步来,不要跳步骤!
2.详细阅读过使用手册,并且确保是框架的问题。

问题描述
使用TagSegement组件是右上角显示signcountview存在问题
如何重现
重现的步骤:

  1. TabSegment.Tab tab = new TabSegment.Tab("内部消息");
    tab.setSignCountMargin(0, -DensityUtils.dp2px(getContext(), 4));
    tab.showSignCountView(getContext(), 1);
  2. tabSegment.addTab(tab);

期望的效果
image

截图
如果方便的话,贴一下程序截图和代码片段以帮助解释您的问题。
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.