标签: android-ui

使用imeOption = actionSend时,当EditText为空时禁用发送按钮

当文本为空时,我们要禁用按钮(这是在纵向模式下设置的方式)任何想法?

编辑:我不认为它很清楚但我可以启用/禁用我自己的按钮..但是当使用横向模式时,当键盘弹出时,屏幕被一个特定于Android的文本区域覆盖,并带有它自己的按钮(因此imeOption)所以我没有启用/禁用我的按钮的问题..这是我想在文本区域为空时禁用的Android按钮..

android android-ui

4
推荐指数
1
解决办法
5352
查看次数

在不符合textview大小的文本后3点

我有这段代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="100sp"          
            android:orientation="vertical"
            android:id="@+id/linearLayout1">
<TextView 
       android:id="@+id/click"
       android:layout_width="fill_parent"
       android:layout_height="30sp"               
       android:text="Enter the text right over here"
       android:textSize="25sp"  
       android:textColor="#000000"
       android:textStyle="bold"     
       android:onClick="onClick"                     
       android:clickable="true"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我需要将"在此处输入文本"文本写为"正确输入文本..."(因为文本超出了定义的宽度.

我该如何创建该功能?

android android-ui android-layout

4
推荐指数
1
解决办法
7889
查看次数

在非 UI 线程上实例化视图

我知道 UI 元素(视图层次结构)只能从 UI 线程进行操作。对于后台操作,可以使用 AsyncTask,它提供事件处理程序以到达 UI 线程。

简而言之,是否允许getApplicationContext()在非 UI 线程中实例化 View(绑定到)?这个自定义 View 后代 - 一旦实例化 - 从UI 线程添加到视图层次结构。所以只有构造函数调用是在Asynctask.doInBackground(); 中完成的。它将 ( addView(...))附加到 Activity 的根布局层次结构仍然在 UI 线程中完成。

详细说明:

public MyView extends View {
     public MyView(Context context) { 
            ...
     }
...
}
Run Code Online (Sandbox Code Playgroud)
  1. 我做了一个自定义视图,覆盖onDraw(...)等。

  2. 当用户在我的主 Activity 中单击某个 MenuItem 时,会创建另一个 Activity (MyOtherActivity) 并显示哪个屏幕正是 MyView

  3. 由于必须立即显示 MyOtherActivity 的屏幕,因此我在 AsyncTask 中预先实例化 MyView,而用户在主 Activity 中的其他位置(即他还没有单击该 MenuItem)。MyView 引用存储在静态数据成员中。

  4. MyOtherActivity.onCreate()被调用时,它的构造函数代码从静态中获取 MyView,并通过addView(...).

  5. (我知道静态变量可能会导致内存泄漏,因此我将其设置为null不需要时。)

MyView …

java android android-ui android-asynctask android-view

4
推荐指数
1
解决办法
1045
查看次数

为对话框创建阴影

我想为我的自定义对话框创建一个阴影是可能的吗?

GhazalActivity.public void viewShareMenu() {
        Dialog share=new Dialog(this,R.style.shareDialogStyle);
        share.setContentView(R.layout.share_popup_layout);
        LayoutParams params = share.getWindow().getAttributes();
        params.y = this.getResources().getDimensionPixelSize(R.dimen.topbar_height);
        params.gravity=(Gravity.RIGHT|Gravity.TOP);
        share.getWindow().setAttributes(params);
        share.show();
}
Run Code Online (Sandbox Code Playgroud)

styles.xml:

<style name="shareDialogStyle" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:fadeEnabled">true</item>
    <item name="android:fadeDuration">1500</item>
    <item name="android:shadowColor">@color/temp</item>
    <item name="android:shadowDx">0</item>
    <item name="android:shadowDy">5</item>
    <item name="android:shadowRadius">10</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

share_popup_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="150dip"
    android:background="@color/bg_Ghazal_share_menu"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        style="@style/shareDialogButtons"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这样做有什么解决方案吗?

android android-ui android-layout

4
推荐指数
1
解决办法
9346
查看次数

如何实现具有最大高度和内部滚动的多行TextView

我希望使用以下规则限制TextView在屏幕中可以占用的空间量:

  • 如果文本很短(比方说140个字符或2行),则需要尽可能多的空间而不是更多.
  • 如果文本很长,即段落,则限制视图的最大高度(使用某种maxHeight或最大行数)

这里有一些截图来解释有效和无效的结果:

短文:

在此输入图像描述

中文:

在此输入图像描述

内部滚动:

在此输入图像描述

空格:

在此输入图像描述

长度过长:

在此输入图像描述

java android android-ui

4
推荐指数
1
解决办法
3949
查看次数

延迟UI线程

我正在listview使用以下代码设置项目的颜色parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#FF9494"));

我写的这段代码OnItemClickListener.

设置颜色后,我希望将此颜色保持4秒钟,然后将项目的颜色恢复为之前的颜色(比如白色).

我尝试在UI线程上进行睡眠,但我知道这不是一个正确的方法.

任何人都可以建议我如何实现这一目标?

android android-ui android-activity

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

Android Tablet UI:多窗格片段或线性布局

我需要创建最初仅适用于平板电脑的应用。我知道“列表和详细信息”模式,其中存在一些内容列表,单击列表会显示有关所单击项目的详细信息。

只要所有布局都始终具有两个窗格即可:这是完美的:一个用于项目列表,另一个用于所选项目的详细信息。

好吧,在我的应用程序中,我想使用通常用于项目列表的第一个窗格作为应用程序中所有可用选项的菜单,并使用第二个窗格(占据大部分可用空间)来显示基于第一个片段中选择的选项的特定布局。

问题在于第二个窗格将不会总是由单个部分组成。

这些是我将要遇到的所有可能的情况(带有红框的左侧部分代表应始终显示的菜单):

1.详细信息窗格由一个部分组成:

在此处输入图片说明

2.“详细信息”窗格由大小相同的两个部分组成,没有主从关系。

在此处输入图片说明

3.“详细信息”窗格由两个部分组成,这两个部分确实具有主从关系,但主要部分比“详细信息”部分宽

#Edit:

由于我的应用程序的主要目标是帮助服务员下订单,因此当出现以下情况时,这第三个情况就起作用了:

  • 服务员从左侧菜单中选择“接单”选项(假设它是图像中的“第二项”)
  • 在详细信息窗格的第一部分中,服务员可以在他们服务的所有食物类别中进行选择(假设它是顶部的列表),并根据所选类别,以下列表显示了该特定类别下的所有菜肴。
  • 一旦服务员点击菜,它就会自动添加到详细信息窗格的第二部分(在第一种情况下是隐藏的)

在此处输入图片说明

4.“详细信息”窗格由两个部分组成,这两个部分确实具有主从关系,但“详细信息”部分比“主”部分宽。

在此处输入图片说明

我知道,如果要从不同尺寸的屏幕和方向重用布局,则必须使用片段,但必须确定要在细节窗格中显示两个或一个部分(片段),还是要比哪个部分宽另一个似乎是很多工作,老实说,我不确定该怎么做,因为我现在所知道的是主要活动,即带有菜单窗格和详细信息窗格的插槽的主活动应与此类似。 :

<?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">
<FrameLayout
android:id="@+id/menu"
android:layout_weight="30"
android:layout_width="0px"
android:layout_height="match_parent"
/>
<FrameLayout
android:id="@+id/content"
android:layout_weight="70"
android:layout_width="0px"
android:layout_height="match_parent"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

您认为您可以在此处提供一些UI指南吗?也许我在考虑所有这一切,我应该采用一个线性布局并结合所需零件的数量。

提前致谢。

android master-detail android-ui android-layout android-fragments

4
推荐指数
1
解决办法
3737
查看次数

创建自定义视图

我想创建一个自定义视图TestView类,我可以通过它创建对象new TestView().但是,新的视图类需要AttributeSet对象.从哪里获取AttributeSet以及它包含哪些内容?

android android-ui

3
推荐指数
1
解决办法
5392
查看次数

相对布局宽度/高度不能以编程方式工作?

我想以编程方式进行相对布局并设置android:layout_widht = 60 android:layout_height = 60.当我以编程方式执行时,它是否填满所有屏幕?我怎样才能做到这一点?

我的代码:`

      RelativeLayout relativeLayout=new RelativeLayout(getContext());
        RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        rel_btn.height = 60;
        rel_btn.width = 60;
        relativeLayout.setLayoutParams(rel_btn);
 this.setBackgroundResource(com.example.R.drawable.line);`
Run Code Online (Sandbox Code Playgroud)

屏幕: 在此输入图像描述

android android-ui android-layout

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

Toast的保证金值是做什么的?

Android Toast类提供了获取和设置边距的方法.我很确定他们会提到整个吐司消息的外边距.由于Toast消息在UI上浮动,为什么这些边距确实必要?

我试着查看SDK参考以及搜索Internet.我找到的最接近解决方案的是一条线建议,即边距偏移都允许控制Toast的定位.为什么我需要两种方法(尽管概念上不同,因为边距允许按容器宽度百分比来规定),以控制Toast的定位?

可以肯定的是,这些边距不像其他布局的填充那样工作吗?这没有意义,但我想明确一点.

总而言之,我想知道为什么需要保证金,保证金的作用以及保证金与抵消的使用情况,即何时应该使用保证金,何时应使用抵消额,为什么?

更新:

我还没有找到任何答案.我尝试使用边距而不是在代码中使用偏移量,并发现它们似乎提供了两种不同的Toast定位范例.设计意图(为什么有两种方法),当我应该使用一种方法而不是另一种方法时(或者至少是其他程序员/ UI设计者发现一种方法比其他方法更有用的例子),甚至是确切的操作(做边距)这些方法的中心"它们里面的吐司?是对最近的容器边缘施加的边缘?"仍然不清楚.

更新2:

我仔细查看了文档,还看了谷歌指出的Toast.java的一些代码.显而易见的是Toast包含在一个Window(Activity窗口?)中,它可能是一个叠加层.WindowManager.LayoutParams类还提供了进一步的线索.我已决定使用Toasts,偏移和边距,以及查看AOSP中的代码以获得更清晰的理解.

我会在这里更新,因为我发现了更多.

android android-ui

3
推荐指数
1
解决办法
4974
查看次数