我在我的应用程序中有一个像滑动菜单栏的Facebook,其中应用程序的两个内容和主要布局由自定义布局类处理.
我想删除我的应用程序的标题栏
问题:
即使我放置
机器人:Theme.Light.NoTitleBar
在我的清单中,标题栏有一个空白区域.由此我的整个布局被推倒了.
我试过用
requestWindowFeature(Window.FEATURE_NO_TITLE);
和
getWindow()setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN).
但仍然没有删除标题栏空间.
这就是应用程序的样子


我认为这是由于Custom LinearLayout类保存了主滑动布局.但我无法从自定义布局类中删除标题栏空间.建议更好的解决方案.
自定义布局类
public class MainLayout extends LinearLayout {
public MainLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MainLayout(Context context) {
super(context);
}
// Overriding LinearLayout core methods
// layout based on the children
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
mainLayoutWidth = MeasureSpec.getSize(widthMeasureSpec);
menuRightMargin = mainLayoutWidth * 10 / 100;
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
menu = this.getChildAt(0);
content = this.getChildAt(1); …Run Code Online (Sandbox Code Playgroud) 我有android : minSdkVersion="11" android:targetSdkVersion="11".
在我的主题中,我使用了引用 @android:color/holo_blue_light
直到现在(在几个月内)它完全没问题.现在,我在一个地方已经改变@android:color/holo_blue_light,以@android:color/background_dark和suddently在我所有的地方holo_blue_light我有一个错误:
@android:color/holo_blue_light requires API level 14 (current min is 11) Android Lint Problem
Run Code Online (Sandbox Code Playgroud)
他们是否在sdk中改变了一些东西?即使我手动返回到以前版本的文件,holo_blue_light只有我仍然有相同的错误.(当然,Eclipse的最新定义是由Internet自动下载的.并且它可以在几个月内使用sdk 11作为最低要求).
有帮助吗?是不是任何sdk问题而不是我的应用程序问题?
我的应用程序的主要主题继承自Theme.AppCompat,并且我创建了一个选择器,当您按下并将焦点按在Lollipop上时,可以进行Ripple效果.
但是,当我回到4.0设备时,当我聚焦列表视图项时,它默认返回到丑陋的蓝色.我到处寻找定义这种颜色的特性希望在没有任何运气的情况下覆盖它 - 任何想法我怎么能这样做?
我一直在使用一种方法从当前获取颜色属性Context:
public static int getColorAttribute(Context context, @AttrRes int attr) {
final TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(attr, value, true);
return value.data;
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是当我尝试在扩展Application它的类中使用它时,它返回0. 在大多数情况下,我会像这样调用方法:
int colorAccent = Util.getColorAttribute(this, R.attr.colorAccent);
Run Code Online (Sandbox Code Playgroud)
这将返回"colorAccent"我集themes.xml作为我AppTheme在我的清单。但是在Application课堂上我不得不调用getApplicationContext()而不是this. 因此,我也将方法的其他实例之一切换到了ActivitytogetApplicationContext()中,它返回了0. 我也尝试过getApplication(),getBaseContext()结果相同。
我想知道是否有办法从类中的应用程序主题中获取颜色Application。或者如果没有,为什么getApplicationContext().getTheme()似乎没有返回应用程序主题。
java android android-theme android-styles android-attributes
我正在尝试在删除按钮上使用警报对话框。但是显示对话框显示异常。当我单击删除时,它会崩溃并在 .show 上显示异常。
我尝试为此活动使用 Theme.AppCompat 主题,但它仍然崩溃。
<activity android:name=".AddEventActivity"
android:theme="@style/Theme.AppCompat">
</activity>
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(getApplicationContext())
.setTitle("Delete entry")
.setMessage("Are you sure you want to delete this entry?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Yaay", Toast.LENGTH_SHORT).show();
i = new Intent();
db.deleteEvent(eventData);
Log.i("d", "delete");
setResult(RESULT_OK, i);
finish();
// continue with delete
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show(); …Run Code Online (Sandbox Code Playgroud) java android android-appcompat android-theme illegalstateexception
我想让用户可以切换整个应用程序的颜色皮肤.我的意思是当用户按下屏幕按钮时动态切换应用程序的某些自定义视图的样式.我知道如果你Activity.setTheme()在onCreate()方法之前调用,你可以动态地改变应用程序的主题,但是NavigationView在xml布局上应用了自定义样式的普通视图(例如),没有setTheme或setStyle方法,所以它不会出现可以动态改变他们的风格.
我认为我的目标可能是引用在styles.xml文件中声明的AppTheme中声明的颜色.我的意思是,我可以宣布两个AppThemes,每个都有一组颜色,然后,在为自定义视图声明的自定义样式中,引用颜色.像这样的东西:
<resources>
<style name="AppTheme" parent="Theme.AppCompat">
<item name="customColor">#111111</item>
</style>
<style name="AppTheme.AnotherColor" parent="Theme.AppCompat">
<item name="customColor">#222222</item>
</style>
<style name="CustomActionBar">
<!-- title text color -->
<item name="android:textColorPrimary">@styles/customColor</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
因此,默认情况下,我的"AppTheme"上声明的自定义Color将默认使用颜色应用111111.但是,当我使用应用setTheme(R.styles.AppTheme_AnotherColor)的颜色更改我的应用程序的主题时222222.如果这是可能的,那将是完美的!但它不可能或者我不知道如何直接从同一styles.xml文件的另一种样式访问样式中声明的颜色.我的意思@styles/customColor是不正确,我不知道如何访问这种颜色.
怎么能实现这一目标?
当我多次将额外的属性应用到 AppTheme 时,它会覆盖前一个属性。这是我正在使用的代码:
主要活动:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
getTheme().applyStyle(R.style.AppTheme_OverlayPrimaryRed);
// If you change `false` to `true`, the overlay above is overwritten.
if (false) {
getTheme().applyStyle(R.style.AppTheme_OverlayAccentRed);
}
super.onCreate(savedInstanceState);
...
}
Run Code Online (Sandbox Code Playgroud)
AppTheme.OverlayPrimaryRed:
<style name="AppTheme.OverlayPrimaryRed">
<item name="colorPrimary">@color/material_red_500</item>
<item name="colorPrimaryDark">@color/material_red_700</item>
</style>
Run Code Online (Sandbox Code Playgroud)
AppTheme.OverlayAccentRed:
<style name="AppTheme.OverlayAccentRed">
<item name="colorAccent">@color/material_red_A200</item>
</style>
Run Code Online (Sandbox Code Playgroud)
有什么想法可以解决这个问题吗?
android android-xml android-theme android-activity android-styles
有些东西不起作用;我不知道这是模拟器的问题还是 Android Oreo 上的错误(我没有使用 Android O 的物理设备),但我无法像 Marshmallow 那样从深色状态栏主题切换到浅色状态栏主题。
样式.xml(来自api 23):
<resources>
<style name="ThemeLight" parent="MyBaseTheme">
<item name="android:windowBackground">?attr/colorPrimary</item>
<item name="android:statusBarColor">?attr/colorPrimary</item>
<item name="android:windowLightStatusBar">true</item>
</style>
<style name="ThemeDark" parent="MyBaseThemeDark">
<item name="android:windowBackground">?attr/colorPrimary</item>
<item name="android:statusBarColor">?attr/colorPrimary</item>
<item name="android:windowLightStatusBar">false</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
这在 Android M 上运行良好,当我使用 更改主题时setTheme(),但在 Android O 中,一旦我切换到浅色主题,它就不再更改并且状态栏保持黑色(windowLightStatusBar = true)/:
android android-theme android-6.0-marshmallow android-8.0-oreo
我的项目构建和运行顺利,但是在styles.xml中,"Theme"以红色突出显示,每次我将项目提交给Git时都会注意到这个错误:
Error:(4, 36) Cannot resolve symbol 'Theme'
styles.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
请注意,我已尝试将我的项目与gradle文件同步,并确保google()在我的buildscript块中存在,build.gradle如下面这些问题的答案中所述:
2] 无法在styles.xml(Android Studio)中解析符号'Theme'
这些问题中接受/最高投票的答案并没有解决我的问题,请帮忙
这个问题应该很简单,但是我没有找到答案。我有一个带有可选重音的应用程序,并且我试图添加一个使用android系统重音的选项(像Lawnchair之类的应用程序有这样的选项)。在系统重音的样式中,我尝试以各种可能的方式来获取此重音:
?android:colorAccent
?android:attr/colorAccent
?attr/colorAccent
这是样式:
<style name="AppTheme.systemAccent" parent="AppTheme">
<item name="colorAccent">???</item>
</style>
Run Code Online (Sandbox Code Playgroud)
似乎没有任何效果,应用程序崩溃,但是我确定这是可能的。当我使用普通颜色时,重音选择效果很好。我哪里错了?
编辑:为了清楚起见,我正在尝试获取系统的重点颜色,即在设置,通知面板等中使用的系统范围的颜色。现在可以在Android 10中选择该颜色,之前可以在Oxygen OS之类的rom中进行选择。假设我在Android 10设备上的设置->自定义中选择红色重音。我想在我的应用中得到这个红色的口音
android-theme ×10
android ×9
java ×2
android-10.0 ×1
android-xml ×1
eclipse ×1
sdk ×1
titlebar ×1
xml ×1