我已经从自定义视图中创建了通知 问题是它在Nexus 5X设备上看起来很好,但在三星Galaxy S4设备上看起来很糟糕 我的通知包含希伯来语内容,因此需要采用从右到左的方向(意味着按钮位于左侧,文本位于右侧)。
正如您所看到的,Galaxy S4上的通知是不同的(右侧的按钮,文本缩进是关闭的等等)
我不得不说大多数应用程序在两个设备上看起来都很好。 这是唯一让两者分开的因素 此外,两个设备都设置为相同的语言和区域设置。
这是布局的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
android:layout_marginTop="-4dip"
android:layoutDirection="locale">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="59dp"
android:text="סבבה"
android:layout_height="227dp"
android:id="@+id/attendButton"
android:layout_marginLeft="-5dip"
android:layout_marginTop="-72dip" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="59dp"
android:text="לא טוב"
android:layout_height="245dp"
android:id="@+id/declineButton"
android:layout_marginLeft="-7dip"
android:layout_marginTop="-80dip" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Event Name"
android:tag="event"
android:id="@+id/eventName"
android:textColor="@android:color/black"
android:textSize="21sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_weight="1"
android:visibility="invisible"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="EventTime"
android:id="@+id/eventTimeTxt"
android:textColor="#000000"
android:gravity="right"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="EventDayOfWeek"
android:id="@+id/eventDayOfTheWeekTxt"
android:textColor="#000000"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="yesFromInvited"
android:textColor="#000000"
android:id="@+id/yesFromInvitedTxt"/>
</LinearLayout>
</LinearLayout>
我认为通知中文本和按钮的位置可能与内容是希伯来语(从右到左语言)的事实有关。
我在两个不同的Galaxsy S4设备上试过它,它们都有Android 5.0.1,它们看起来都一样。所有设备都是相同的语言和区域设置。
我可以做些什么来解决这个问题?
答案 0 :(得分:0)
我不会提到您的设计没有遵循通知的设计建议这一事实(因为您可以阅读here)。
我要说的是,关于你宣称你的内容是希伯来语的事实,你只是没有正确设计你的xml属性。你应该使用:
android:layoutDirection="rtl"
并确保在清单中的android:supportsRtl="true"
标记中添加Application
。
您的按钮需要插入根LinearLayout
的末尾,而不是在开头。
你的xml应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/eventName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="event"
android:text="שם האירוע"
android:textColor="@android:color/black"
android:textSize="21sp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView"
android:visibility="invisible"/>
<TextView
android:id="@+id/eventTimeTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="EventTime"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#000000"/>
<TextView
android:id="@+id/eventDayOfTheWeekTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="EventDayOfWeek"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#000000"/>
</LinearLayout>
<TextView
android:id="@+id/yesFromInvitedTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="yesFromInvited"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#000000"/>
</LinearLayout>
<Button
android:id="@+id/attendButton"
style="?android:attr/buttonStyleSmall"
android:layout_width="59dp"
android:layout_height="227dp"
android:layout_marginLeft="-5dip"
android:layout_marginTop="-72dip"
android:text="סבבה"/>
<Button
android:id="@+id/declineButton"
style="?android:attr/buttonStyleSmall"
android:layout_width="59dp"
android:layout_height="245dp"
android:layout_marginLeft="-7dip"
android:layout_marginTop="-80dip"
android:text="לא טוב"/>
答案 1 :(得分:0)
在你的三星设备RTL正在应用,它可能因为三星自定义android框架。
在这里,我认为您应该通过在XML中设置android:layoutDirection="ltr"
属性来禁用RTL。
答案 2 :(得分:0)
首先,从Android设置菜单打开Galaxy S4的开发人员选项页面,然后选中&#34;强制RTL布局方向&#34;。检查通知是否以任何方式更改 - 如果是,则表示设备首先无法正确识别布局为RTL。
或者,您需要检查您的设备是否实际支持RTL语言环境。请记住,区域设置不仅仅是<language>_<country>
,还具有脚本,变体和扩展的概念。最简单的方法来检查:
Configuration config = getResources().getConfiguration();
if(config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
//in Right To Left layout
}
除此之外,当您创建旨在使用RTL语言环境的布局时,请避免使用android:gravity="right"
或android:gravity="left"
。请改用end
和start
。