我正在使用https://github.com/mancj/MaterialSearchBar设置一个带有菜单汉堡的搜索栏。我不能改变原料药。
我得到的是:
android - Android mancj.MaterialSearchBar:使用反射来覆盖和更改一些API布局和小部件,字体系列,粗体和填充-LMLPHP
问题
如何。。。:
减少文本左边的填充?
更改后者的字体系列?
最后,取消胆量?
注:根据文件,这些问题由其他人在下一节中完成。
根据文件
mt_aBCD是允许我们自定义搜索栏的xml属性。然而,以上这些不存在。它们的java等价物(setABCD两者都不是)。
顺便说一下,注意这个api没有很多github活动。我不能用另一个来代替后者。你能给我什么解决办法?
我是否应该更改此API中的某些内容(是否经过授权且合法)?(怎么做?)
我可以改写这个样式吗?等等(如何?)
其他的?
我的实现
我编辑了构建文件,然后在XML布局中添加了搜索栏:

    <com.mancj.materialsearchbar.MaterialSearchBar
    android:id="@+id/material_search_bar"
    style="@style/MaterialSearchBarLight"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginEnd="15dp"
    android:layout_marginStart="15dp"
    android:layout_marginTop="15dp"
    app:layout_constraintBottom_toBottomOf="@+id/toolbar"
    app:layout_constraintEnd_toEndOf="@+id/toolbar"
    app:layout_constraintStart_toStartOf="@+id/toolbar"
    app:layout_constraintTop_toTopOf="@+id/toolbar"
    app:mt_maxSuggestionsCount="10"
    app:mt_navIconEnabled="true"
    app:mt_placeholder="@string/search_placeholder" />

最佳答案

第一分钟:
此库不支持字体系列。这个问题存在于“AA>块”问题中。
github
第二分钟:
文本填充不支持like和“禁用粗体”
但是你可以用反省来解决你的问题
这不是最好的解决方案,但它是有效的

    searchBar = (MaterialSearchBar) findViewById(R.id.searchBar);
    try {
        final Field placeHolder = searchBar.getClass().getDeclaredField("placeHolder");
        placeHolder.setAccessible(true);
        final TextView textView = (TextView) placeHolder.get(searchBar);
        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);

        // fix trouble number 1 paddingLeft
        textView.setPadding(0, 0, 0, 0);
        final RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) textView.getLayoutParams();
        layoutParams.setMargins(0,0,0,0);

        //fix trouble number 2 font-family and number 3 Finally, disable boldness?
        Typeface typeface = Typeface.createFromAsset(getAssets(), getString(R.string.roboto_medium));
        //<string name="roboto_medium">fonts/Roboto-Medium.ttf</string>
        textView.setTypeface(typeface);

        textView.setText("Hello World!");
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }

android - Android mancj.MaterialSearchBar:使用反射来覆盖和更改一些API布局和小部件,字体系列,粗体和填充-LMLPHP
汉堡菜单的大小为48dp,不是边距(declaredfield=navicon)
android - Android mancj.MaterialSearchBar:使用反射来覆盖和更改一些API布局和小部件,字体系列,粗体和填充-LMLPHP
最后一个变体
将此库复制到项目中,然后编辑所有需要的内容。
你可以这么做,因为这个库使用了android - Android mancj.MaterialSearchBar:使用反射来覆盖和更改一些API布局和小部件,字体系列,粗体和填充-LMLPHP
最重要的是指定原始作者

10-08 19:42