有时当我尝试运行我的代码Eclipse控制台说,错误的XML文件:中止build.that意味着我必须在我main.xml中一个错误file.is有没有办法找到我的错误不做猜测和擦除一些XML代码,以便查看问题出在哪里?比如验证我的xml文件!!谢谢
所以我有一个图层列表,其中的项目具有形状和纯色.现在我想在我的代码中更改此颜色.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<clip>
<shape android:id="@+id/seekbar_shape_color">
<solid android:color="#FFD00000" />
</shape>
</clip>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
我尝试获取LayerDrawable并请求第一个项目,现在iam卡住获取clipDrawable并最终得到ShapeDrawable
LayerDrawable sd = (LayerDrawable) v.getResources().getDrawable(R.drawable.seekbar_progress_bg);
((ClipDrawable) sd.getDrawable(0)).get..();
Run Code Online (Sandbox Code Playgroud)
我的另一种方法是获取ShapeDrawable并使用colorFilter设置颜色,但这也不起作用.
ShapeDrawable sd = (ShapeDrawable) v.getResources().getDrawable(R.id.seekbar_shape_color);
sd.setColorFilter(R.color.cold_color,PorterDuff.Mode.MULTIPLY);
Run Code Online (Sandbox Code Playgroud)
编辑:好吧所以我开发了一个新的计划,我试图使用LevelList
<level-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0" android:drawable="@color/hot_color">
</item>
<item android:maxLevel="1" android:drawable="@color/cold_color">
</item>
</level-list>
Run Code Online (Sandbox Code Playgroud)
我认为Level的默认值是0但我没有使用LevelList显示进度条.另外我不知道我必须在哪个元素上设置setLevel()
holder.progressbar.getBackground().setLevel(0);
holder.progressbar.getIndeterminateDrawable().setLevel(0);
holder.progressbar.getProgressDrawable().setLevel(0);
Run Code Online (Sandbox Code Playgroud)
这个调用给我奇怪的结果,就像只有新的进度条项目获得100%进展着色,闻起来像缓存问题.
希望有人可以告诉我如何在LayerList上正确使用LevelList以获得进度条感谢
这是我的android xml源代码,用于地图 - 底栏布局.我在屏幕上显示一个巨大的地图,我需要在屏幕底部有一个30dp的高布局,以显示一些像图像一样的标签.如何将水平线性布局推到页面底部?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height=" what here ? "
android:layout_width="fill_parent"
android:orientation="vertical">
<com.google.android.maps.MapView
android:id="@+id/map_view"
Map goes here. Almost full screen. Exactly full - 30dp;
/>
<LinearLayout>
I want 3 images here. Bottom of the screen.
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) 我们正在为开发Android应用程序的单个应用程序创建许多XML文件; 当然这是android的主题.对于app的每个屏幕,我们都在创建一个带有一些布局的XML(静态实现).在执行时,每次读取XML文件以获取它想要显示我们设计的屏幕的所有资源.
通过在java代码本身中添加几行(动态实现)可以实现相同的设计.就像我们可以扩展ListActivity而不是创建XML文件一样.那么为什么要使用XML,因为应用程序需要从手机内存中读取文件,这可能导致访问速度慢并使应用程序变慢?
因此,动态实现总是优于静态实现.
如果我错了,请纠正我.
对于某些Android XML属性,在插入格式化组件之前,不要使用">"结束开始标记.例如:
<EditText
android:id="@+id/etEmails">
</EditText>
Run Code Online (Sandbox Code Playgroud)
为什么在开始和结束标记中没有EditText组件的定义?另外,我注意到有些甚至不需要结束标记,而只是它们本身就是XML语句.例如:
<Button
android:text="Subtract 1"
android:id="@+id/buttSub"
/>
Run Code Online (Sandbox Code Playgroud)
为什么这个XML语句在实际提供与EditText字段相同的组件时不需要结束语句?
是否有一种故障保护方式可以知道哪些需要打开和关闭语句以获得正确的语法?
是否存在哪些列表/参考?
这些不同组件之间有什么区别?
是否可以通过StateListDrawable编程方式对以XML创建的选择器进行膨胀?
我发现StateListDrawable有一个inflate方法,但我找不到用法示例.
这样做会很好:
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, getResources().getDrawable(R.drawable.pressed));
states.addState(new int[] {android.R.attr.state_focused}, getResources().getDrawable(R.drawable.focused));
states.addState(new int[] { }, getResources().getDrawable(R.drawable.normal));
imageView.setImageDrawable(states);
Run Code Online (Sandbox Code Playgroud)
有人知道这是否可能并提供一个例子?
提前致谢.
我知道这是互联网上的一些例子,而且在Stackoverflow上我发现了许多例子,但是不相信它们,它们都没有满足我的需求.即使我前几次问过类似的问题,我也再次陷入这个问题.基本上是相同的问题,但方向相反.我可以做任何我想要的动画,Activity B但这里的问题是Activity A我可以在几个场景中制作动画.基本上只在这个组合中ActivityA播放enter_left:
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_on_left);
我想要做的是动画(移动)只是Activity A无论是在startActivity()并onBackPressed()同时Activity B在屏幕上停留不为所动.Activity A总是画在上面(作为一个滑动菜单,我可以这样做Activity B).我真的认为上面的代码片段可以完成这项工作:
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivityForResult(intent, 500);
overridePendingTransition(R.anim.stay_still, R.anim.exit_on_left);
Run Code Online (Sandbox Code Playgroud)
但这甚至不播放任何动画
//this is the animation for onBackPressed()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
overridePendingTransition(R.anim.enter_from_left, 0);
}
Run Code Online (Sandbox Code Playgroud)
动画Activity A我想要但Activity B突然从屏幕上消失,我想留下(设置(R.anim.enter_from_left, R.anim.stay_still)什么也不做).
我准备了所有5个必要的动画:
enter_from_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" > …Run Code Online (Sandbox Code Playgroud) 我的应用定位到API 28并具有最低要求API 15。作为支持库,我正在使用AndroidX。
我有一个活动托管的首选项片段,如下所示:
SettingsFragment.java
package com.example.app;
import android.os.Bundle;
import androidx.preference.PreferenceFragmentCompat;
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
Run Code Online (Sandbox Code Playgroud)
SettingsActivity.java
package com.example.app;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}
}
Run Code Online (Sandbox Code Playgroud)
这是 SettingsFragment.java
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue="false"
android:key="pref_switch"
android:title="@string/switch" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
作为首选项层次结构的根,我应该使用PreferenceScreen还是androidx.preference.PreferenceScreen使布局实际上向后兼容(使用AndroidX)?两者有什么区别?最佳做法是什么?
android android-preferences sharedpreferences android-xml androidx
1.)是否有任何理由要在android xml布局中使用默认值?
例如。下面的TextView包含默认值
android:visibility="visible"
`<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:visibility="visible"/>`
Run Code Online (Sandbox Code Playgroud)
猜想:因为这是默认值,所以它无效,因此是XML文件中不必要的代码行。那条思路正确吗?
2.)如果没有理由在Android xml文件中存在默认值,是否可以使用lint插件指出Android XML文件中的默认值代码行?
我认为XML文件中的许多代码行都是默认值,没有任何用处。我们如何减少这些代码行?
android ×10
android-xml ×10
xml ×2
android-view ×1
androidx ×1
animation ×1
layout ×1
lint ×1
syntax ×1