标签: android-appcompat

当键盘出现时,Android工具栏会向上移动

我正在创建一个基于聊天的UI屏幕,其中我有聊天消息的工具栏和recyclerview,并回复msg布局.

每当edittext获得焦点时它会向上移动工具栏.相反,我想重新调整recyclerview的大小.

一些stackoverflow答案建议在工具栏下方放置一个空的滚动视图,但它不起作用.

        <activity
            android:name=".PostMessageActivity"
            android:label="@string/title_activity_post_message"
            android:windowSoftInputMode="stateVisible|adjustResize"
            >
        </activity>
Run Code Online (Sandbox Code Playgroud)

我设置windowSoftInputModestateVisible|adjustPan清单文件.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.pasonet.yokibu.PostMessageActivity"
>
<include
    android:id="@+id/toolbar_home"
    layout="@layout/toolbar_home"
    android:elevation="5dp"
    />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ScrollView>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar_home"
    android:orientation="vertical"
    android:layout_above="@+id/add_post_layout"
    >
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/post_msg_recyclerview"
        >
    </android.support.v7.widget.RecyclerView>


</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:padding="5dp"
    android:id="@+id/add_post_layout"
    android:background="#ffffff"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:elevation="5dp"
    android:layout_margin="0pt"
   >

    <EditText
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:id="@+id/messageText"
        android:layout_gravity="bottom"
        android:layout_weight="1"
        android:maxLines="4"
        android:scrollbars="vertical"
        android:background="@color/trasnperant"
        android:hint="Type your message"
        android:layout_marginBottom="4dp"
        />
    <ImageButton
        android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-linearlayout android-toolbar android-recyclerview

33
推荐指数
5
解决办法
3万
查看次数

如何更改工具栏导航和溢出菜单图标(appcompat v7)?

我在使用v7工具栏时遇到了困难.曾经简单的任务ActionBar,现在似乎过于复杂.无论我设置什么样的风格,我都无法更改导航图标(打开抽屉)或溢出菜单图标(打开菜单).

所以我有一个 Toolbar

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/ghex"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Light"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    >
Run Code Online (Sandbox Code Playgroud)

我编码看起来像这样

//before in the code I do
mToolbar = (Toolbar) findViewById(R.id.toolbar);

private void initToolbar() {
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要更改Drawable这两个图标.

我如何为compat v7做到这一点Toolbar?我想我需要在抽屉打开时更改箭头(Android 5.0).

android android-appcompat android-layout material-design android-toolbar

32
推荐指数
3
解决办法
9万
查看次数

有什么用... -v21.xml?

我正在为Android 4.0及更高版本开发一个应用程序.我刚刚更新到appcompat 22.2.0,但我在网上看到所有这些对...- v21/v22.xml的引用.它们用于什么?他们有所作为吗?提前致谢!

android android-appcompat

32
推荐指数
1
解决办法
2万
查看次数

AppCompat 23.3支持向量不再起作用?

我正在使用Support Library 23.2中添加的支持向量drawable 和AppCompat.我正在使用带有app:srcCompat和内部的矢量绘图,StateListDrawable所以我可以将它们android:drawableLeft用于我的TextView.

自升级到AppCompat的23.3.0版本以来,只有向量app:srcCompat正在运行.每当我以另一种方式引用它时

FATAL EXCEPTION: main
 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.package.name/.MainActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class Button
 ...
 Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class Button
 ...
 Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #14: invalid drawable tag vector
  at android.graphics.d
Run Code Online (Sandbox Code Playgroud)

改变了什么现在导致我的支持向量drawables在某些情况下失败?

android android-appcompat android-vectordrawable

32
推荐指数
3
解决办法
9450
查看次数

如何在AndroidX中的布局XML中添加cardview

如何在AndroidX中的布局XML中添加cardview

升级到AndroidX之后

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp">
Run Code Online (Sandbox Code Playgroud)

给出一个错误

找不到以下类:-android.support.v7.widget.CardView(修复构建路径,编辑XML,创建类)

dependencies {

    implementation 'androidx.appcompat:appcompat:1.0.0'

    implementation 'androidx.cardview:cardview:1.0.0'
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在AndroidX下的xml中使用CardView

谢谢

android android-appcompat android-cardview material-components-android androidx

32
推荐指数
6
解决办法
4万
查看次数

使用AppCompat,Actionbar中不会显示徽标

我不知道我错过了什么,但我无法在我的操作栏中设置我的徽标.我的AndroidManifest.xml:

<application 
    android:icon="@drawable/application_icon" 
    android:label="@string/icon_name"
    android:logo="@drawable/actionbar_logo"
    android:theme="@style/PolarTheme">
Run Code Online (Sandbox Code Playgroud)

我还在清单中的活动标签中设置了我的徽标:

<activity 
    android:name=".Main"
    android:theme="@style/PolarThemeLogo"
    android:logo="@drawable/actionbar_logo"
    android:windowSoftInputMode="adjustPan">
</activity>
Run Code Online (Sandbox Code Playgroud)

这是在我的themes.xml中:

<style 
    name="PolarThemeLogo" parent="Theme.AppCompat.Light.DarkActionBar">  
    <item name="colorPrimary">@color/mainColor500</item>
    <item name="colorPrimaryDark">@color/mainColor700</item>
    <item name="colorAccent">@color/accentColorA200</item>

    <item name="actionBarStyle">@style/MyActionBarLogo</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我的styles.xml:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="background">@color/mainColor500</item>
    <item name="displayOptions">useLogo</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在我的Main.java中:

public class Main extends ActionBarActivity {

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);    
    ActionBar actionBar = getSupportActionBar();
    actionBar.setTitle("");
    actionBar.setDisplayUseLogoEnabled(true);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新 - 已解决

android:logo从AndroidManifest.xml中删除了所有属性,并修改了我的MyActionBarLogo样式,如下所示:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="background">@color/mainColor500</item>
    <item name="logo">@drawable/actionbar_logo</item>
    <item name="displayOptions">useLogo|showHome</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在操作栏显示我的徽标.:)

android android-appcompat

31
推荐指数
2
解决办法
3万
查看次数

使用AppCompat'layout_behavior'和'@ string/appbar_scrolling_view_behavior'抛出异常

我有一个奇怪的探测器使用AppCompat Lib 22.2和新引入的:layout_behavior

如果我使用值"@ string/appbar_scrolling_view_behavior",如此处所述Android Design Support Lib,应用程序将终止,但会出现以下异常:

Could not inflate Behavior subclass android.support.design.widget.Settings
     Caused by: java.lang.RuntimeException: Could not inflate Behavior subclass android.support.design.widget.Settings
     Caused by: java.lang.ClassNotFoundException: android.support.design.widget.Settings
     Caused by: java.lang.NoClassDefFoundError: android/support/design/widget/Settings
     Caused by: java.lang.ClassNotFoundException: android.support.design.widget.Settings
Run Code Online (Sandbox Code Playgroud)

如果我改为:

app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"
Run Code Online (Sandbox Code Playgroud)

一切正常.

我错过了什么?

android android-appcompat

31
推荐指数
3
解决办法
4万
查看次数

设置Android ActionBar颜色时出现"字段可以转换为局部变量"消息

设置操作栏的颜色后,actionBarColorin private String actionBarColor = "#B36305";会突出显示为黄色,并且由于某种原因会返回警告.可以做些什么来摆脱这个警告?

字段可以转换为局部变量

public class MainActivity extends AppCompatActivity {

    private String actionBarColor = "#B36305";

    private int getFactorColor(int color, float factor) {
        float[] hsv = new float[3];
        Color.colorToHSV(color, hsv);
        hsv[2] *= factor;
        color = Color.HSVToColor(hsv);
        return color;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragment_activity_main);

        ActionBar actionBar = getSupportActionBar();
        if(actionBar != null) {
            actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java android android-appcompat android-actionbar android-support-library

31
推荐指数
2
解决办法
4万
查看次数

popupBackground与Material Design的故障

我一直在努力将我的应用程序更新为Material Design.

我有一个使用标签的应用程序.出于某种原因,每当我使用android:popupBackground来设置下拉菜单颜色时,它就会变得怪异.

https://i.imgur.com/Qm2NDYH.png

我设置了一个带有标签的默认项目,并使用了以下主题,同样的事情发生了.有没有其他人有这个问题?我的应用程序是开源的,因此所有代码都可以在这里获得GitHub

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="actionDropDownStyle">@style/Dropdown</item>
    </style>
    <style name="Dropdown" parent="Widget.AppCompat.Light.Spinner.DropDown.ActionBar">
        <item name="android:popupBackground">#000</item>
        <item name="android:paddingLeft">32dp</item>
        <item name="android:paddingRight">32dp</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-actionbar android-actionbar-compat material-design

30
推荐指数
1
解决办法
2386
查看次数

java.lang.NoClassDefFoundError:解析失败:Landroid/support/v4/os/BuildCompat

我在Eclipse安装中将AppCompat库更新为24.2.1,将SDK更新到Android 7.从那以后,我无法运行任何应用程序.如果你能帮助我,我感激不尽......

E/AndroidRuntime(17555): java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/os/BuildCompat;
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:196)
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:181)
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:521)
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
E/AndroidRuntime(17555):    at com.ryosoftware.calendareventsnotifier.MainActivity.onCreate(MainActivity.java:844)
E/AndroidRuntime(17555):    at android.app.Activity.performCreate(Activity.java:5990)
E/AndroidRuntime(17555):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
E/AndroidRuntime(17555):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
E/AndroidRuntime(17555):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
E/AndroidRuntime(17555):    at android.app.ActivityThread.access$900(ActivityThread.java:154)
E/AndroidRuntime(17555):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
E/AndroidRuntime(17555):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(17555):    at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(17555):    at android.app.ActivityThread.main(ActivityThread.java:5294)
E/AndroidRuntime(17555):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17555):    at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(17555):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
E/AndroidRuntime(17555):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
E/AndroidRuntime(17555): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.os.BuildCompat" on path: DexPathList[[zip file "/data/app/com.ryosoftware.calendareventsnotifier-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
E/AndroidRuntime(17555):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat

30
推荐指数
3
解决办法
6万
查看次数