Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
juliao
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
胡尚
juliao
Commits
ccc8b86d
提交
ccc8b86d
authored
3月 06, 2024
作者:
enjoy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
聊天Ui的功能
上级
b8abd43f
隐藏空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
531 行增加
和
9 行删除
+531
-9
provide.gradle
provide.gradle
+5
-1
build.gradle
provide_net/build.gradle
+3
-0
Api.kt
...de_net/src/main/java/com/work/provide_net/http/net/Api.kt
+1
-1
NetHelper.kt
.../src/main/java/com/work/provide_net/http/net/NetHelper.kt
+1
-1
NetWorkEngine.kt
.../main/java/com/work/provide_net/http/net/NetWorkEngine.kt
+2
-2
GsonConverterFactory.java
.../com/work/provide_net/http/util/GsonConverterFactory.java
+1
-1
GsonRequestBodyConverter.java
.../work/provide_net/http/util/GsonRequestBodyConverter.java
+1
-1
GsonResponseBodyConverter.java
...work/provide_net/http/util/GsonResponseBodyConverter.java
+1
-1
Util.kt
...ide_tool/src/main/java/com/work/provide_tool/util/Util.kt
+47
-0
InterflowActivity.kt
...main/java/com/juling/work_onepage/ui/InterflowActivity.kt
+37
-0
TalkInputWidget.kt
...va/com/juling/work_onepage/util/widget/TalkInputWidget.kt
+217
-0
TalkTypeDataWithAdd.kt
...om/juling/work_onepage/util/widget/TalkTypeDataWithAdd.kt
+4
-0
TalkTypeDataWithFeel.kt
...m/juling/work_onepage/util/widget/TalkTypeDataWithFeel.kt
+4
-0
talk_give_word.xml
widget_onepage/src/main/res/drawable/talk_give_word.xml
+7
-0
talk_input_draw.xml
widget_onepage/src/main/res/drawable/talk_input_draw.xml
+7
-0
activity_interflow.xml
widget_onepage/src/main/res/layout/activity_interflow.xml
+10
-1
widget_talk_input.xml
widget_onepage/src/main/res/layout/widget_talk_input.xml
+125
-0
widget_talk_input_with_add.xml
...nepage/src/main/res/layout/widget_talk_input_with_add.xml
+29
-0
widget_talk_input_with_feel.xml
...epage/src/main/res/layout/widget_talk_input_with_feel.xml
+29
-0
talk_input_add.png
widget_onepage/src/main/res/mipmap-xxhdpi/talk_input_add.png
+0
-0
talk_input_feel.png
...et_onepage/src/main/res/mipmap-xxhdpi/talk_input_feel.png
+0
-0
talk_input_key.png
widget_onepage/src/main/res/mipmap-xxhdpi/talk_input_key.png
+0
-0
没有找到文件。
provide.gradle
浏览文件 @
ccc8b86d
...
...
@@ -54,6 +54,9 @@ ext{
"auto_ui"
:
"com.github.JessYanCoding:AndroidAutoSize:v1.2.1"
,
//圆图
"round_iv"
:
"de.hdodenhof:circleimageview:3.1.0"
"round_iv"
:
"de.hdodenhof:circleimageview:3.1.0"
,
//netty
"netty"
:
"io.netty:netty-all:5.0.0.Alpha2"
]
}
\ No newline at end of file
provide_net/build.gradle
浏览文件 @
ccc8b86d
...
...
@@ -43,4 +43,6 @@ dependencies {
api
(
rootProject
.
ext
.
android
.
retrofit2
)
api
(
rootProject
.
ext
.
android
.
retrofit2_gson
)
api
(
rootProject
.
ext
.
android
.
netty
)
}
\ No newline at end of file
provide_net/src/main/java/com/work/provide_net/net/Api.kt
→
provide_net/src/main/java/com/work/provide_net/
http/
net/Api.kt
浏览文件 @
ccc8b86d
package
com.work.provide_net.net
package
com.work.provide_net.
http.
net
import
com.work.provide_data.WeatherData
import
retrofit2.http.GET
...
...
provide_net/src/main/java/com/work/provide_net/net/NetHelper.kt
→
provide_net/src/main/java/com/work/provide_net/
http/
net/NetHelper.kt
浏览文件 @
ccc8b86d
package
com.work.provide_net.net
package
com.work.provide_net.
http.
net
import
com.work.provide_data.WeatherData
...
...
provide_net/src/main/java/com/work/provide_net/net/NetWorkEngine.kt
→
provide_net/src/main/java/com/work/provide_net/
http/
net/NetWorkEngine.kt
浏览文件 @
ccc8b86d
package
com.work.provide_net.net
package
com.work.provide_net.
http.
net
import
com.work.provide_data.WeatherData
import
com.work.provide_net.util.GsonConverterFactory
import
com.work.provide_net.
http.
util.GsonConverterFactory
import
okhttp3.OkHttpClient
import
retrofit2.Retrofit
//import retrofit2.converter.gson.GsonConverterFactory
...
...
provide_net/src/main/java/com/work/provide_net/util/GsonConverterFactory.java
→
provide_net/src/main/java/com/work/provide_net/
http/
util/GsonConverterFactory.java
浏览文件 @
ccc8b86d
...
...
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
work
.
provide_net
.
util
;
package
com
.
work
.
provide_net
.
http
.
util
;
import
com.google.gson.Gson
;
import
com.google.gson.TypeAdapter
;
...
...
provide_net/src/main/java/com/work/provide_net/util/GsonRequestBodyConverter.java
→
provide_net/src/main/java/com/work/provide_net/
http/
util/GsonRequestBodyConverter.java
浏览文件 @
ccc8b86d
...
...
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
work
.
provide_net
.
util
;
package
com
.
work
.
provide_net
.
http
.
util
;
import
com.google.gson.Gson
;
import
com.google.gson.TypeAdapter
;
...
...
provide_net/src/main/java/com/work/provide_net/util/GsonResponseBodyConverter.java
→
provide_net/src/main/java/com/work/provide_net/
http/
util/GsonResponseBodyConverter.java
浏览文件 @
ccc8b86d
...
...
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
work
.
provide_net
.
util
;
package
com
.
work
.
provide_net
.
http
.
util
;
import
com.google.gson.Gson
;
import
com.google.gson.JsonIOException
;
...
...
provide_tool/src/main/java/com/work/provide_tool/util/Util.kt
浏览文件 @
ccc8b86d
package
com.work.provide_tool.util
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.content.Context
import
android.graphics.Rect
import
android.util.DisplayMetrics
import
android.view.View
import
android.view.inputmethod.InputMethodManager
import
android.widget.EditText
import
android.widget.ImageView
import
androidx.core.content.ContextCompat
import
androidx.core.content.getSystemService
import
androidx.lifecycle.LifecycleOwner
import
androidx.lifecycle.lifecycleScope
import
com.bumptech.glide.Glide
import
com.bumptech.glide.request.RequestOptions
import
com.work.provide_tool.R
import
com.work.provide_tool.app.IApp
import
com.work.provide_tool.app.IApp.Companion.app
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.async
...
...
@@ -27,6 +34,25 @@ fun getDrawIdentifier(idStr:String):Int{
return
app
.
resources
.
getIdentifier
(
idStr
,
"mipmap"
,
app
.
packageName
)
}
fun
addListener
(
l
:(
View
)->
Unit
,
vararg
view
:
View
){
view
.
forEach
{
view
->
view
.
setOnClickListener
(
l
)
}
}
var
SHOW
=
1
var
HIDE
=
2
fun
showLayoutType
(
v
:
View
,
showTag
:
Int
){
if
(
showTag
==
SHOW
){
if
(
v
.
visibility
!=
View
.
VISIBLE
){
v
.
visibility
=
View
.
VISIBLE
}
}
else
{
if
(
v
.
visibility
==
View
.
VISIBLE
){
v
.
visibility
=
View
.
GONE
}
}
}
//keep 数据在刷ui的
fun
keepDataUpdateWithUi
(
lfo
:
LifecycleOwner
,
otherThread
:
suspend
()->
Unit
,
uiOfThread
:()->
Unit
=
{}){
lfo
.
lifecycleScope
.
launch
{
...
...
@@ -149,3 +175,23 @@ fun sp2Px(context: Context, spValue: Float): Int {
return
(
spValue
*
fontScale
+
0.5f
).
toInt
()
}
//-----------------------------------------/屏宽高-----------------------------------------
//-----------------------------------------打开软键盘-----------------------------------------
fun
showInputKey
(
editText
:
EditText
){
editText
.
requestFocus
()
var
i
:
InputMethodManager
=
app
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
)
as
InputMethodManager
i
.
showSoftInput
(
editText
,
0
)
}
fun
hideInputKey
(
editText
:
EditText
){
var
i
:
InputMethodManager
=
app
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
)
as
InputMethodManager
i
.
hideSoftInputFromWindow
(
editText
.
windowToken
,
0
)
}
fun
getInputKey
(
a
:
Activity
):
Boolean
{
var
r
=
Rect
()
a
.
window
.
decorView
.
getWindowVisibleDisplayFrame
(
r
)
var
v
=
r
.
bottom
return
getTotalPhoneWithHW
(
2
)-
v
>
0
}
//-----------------------------------------/
打开软键盘
-----------------------------------------
\ No newline at end of file
widget_onepage/src/main/java/com/juling/work_onepage/ui/InterflowActivity.kt
浏览文件 @
ccc8b86d
package
com.juling.work_onepage.ui
import
android.content.Intent
import
android.graphics.Rect
import
android.os.Handler
import
android.os.Looper
import
android.util.Log
import
android.view.KeyEvent
import
android.view.View
import
android.view.Window
import
androidx.lifecycle.ViewModelProvider
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.juling.work_onepage.R
...
...
@@ -23,6 +29,7 @@ class InterflowActivity:GeneralAgentActivity<InterflowViewModel,ActivityInterflo
private
val
iViewModel
by
lazy
{
ViewModelProvider
(
this
)[
InterflowViewModel
::
class
.
java
]
}
private
var
initRv
=
false
companion
object
{
fun
start
(
friendEntity
:
FriendEntity
?){
...
...
@@ -75,9 +82,38 @@ class InterflowActivity:GeneralAgentActivity<InterflowViewModel,ActivityInterflo
}
override
fun
initData
()
{
iDataBinding
.
talkInputWidget
.
setTalkLayoutWithInputListen
{
value
->
Handler
(
Looper
.
getMainLooper
()).
postDelayed
({
rv2End
()
},
50
)
}
}
override
fun
onWindowFocusChanged
(
hasFocus
:
Boolean
)
{
super
.
onWindowFocusChanged
(
hasFocus
)
if
(!
initRv
){
rv2End
()
initRv
=
true
}
}
override
fun
initEvent
()
{
}
private
fun
rv2End
(){
iDataBinding
.
recyclerView
.
scrollToPosition
(
interflowAdapter
.
itemCount
-
1
)
}
override
fun
onKeyDown
(
keyCode
:
Int
,
event
:
KeyEvent
?):
Boolean
{
if
(
keyCode
==
KeyEvent
.
KEYCODE_BACK
){
var
talkInputWidget
=
iDataBinding
.
talkInputWidget
if
(!
talkInputWidget
.
getFunTagWithInit
()){
talkInputWidget
.
restoreKeyInput
()
return
true
}
}
return
super
.
onKeyDown
(
keyCode
,
event
)
}
}
\ No newline at end of file
widget_onepage/src/main/java/com/juling/work_onepage/util/widget/TalkInputWidget.kt
0 → 100644
浏览文件 @
ccc8b86d
package
com.juling.work_onepage.util.widget
import
android.app.Activity
import
android.content.Context
import
android.os.Handler
import
android.os.Looper
import
android.util.AttributeSet
import
android.util.Log
import
android.view.KeyEvent
import
android.view.LayoutInflater
import
android.view.View
import
android.view.inputmethod.EditorInfo
import
android.widget.EditText
import
android.widget.ImageView
import
android.widget.LinearLayout
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
com.chad.library.adapter.base.BaseQuickAdapter
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
import
com.juling.work_onepage.R
import
com.work.provide_tool.util.HIDE
import
com.work.provide_tool.util.SHOW
import
com.work.provide_tool.util.ToastUtil
import
com.work.provide_tool.util.addListener
import
com.work.provide_tool.util.getInputKey
import
com.work.provide_tool.util.hideInputKey
import
com.work.provide_tool.util.showInputKey
import
com.work.provide_tool.util.showLayoutType
class
TalkInputWidget
(
context
:
Context
?,
attrs
:
AttributeSet
?)
:
LinearLayout
(
context
,
attrs
)
{
private
lateinit
var
iv_feel
:
ImageView
private
lateinit
var
iv_add
:
ImageView
private
lateinit
var
rv
:
RecyclerView
private
lateinit
var
layout_feel
:
View
private
lateinit
var
rv_add
:
RecyclerView
private
lateinit
var
layout_add
:
View
private
var
dataAdd
:
ArrayList
<
TalkTypeDataWithAdd
>
=
ArrayList
()
private
var
dataFel
:
ArrayList
<
TalkTypeDataWithFeel
>
=
ArrayList
()
private
lateinit
var
et
:
EditText
private
var
handler
=
Handler
(
Looper
.
getMainLooper
())
private
lateinit
var
a
:
Activity
private
var
adjustTalkLayoutWithInput
:((
Int
)->
Unit
)?
=
null
private
var
addInfoWordArr
=
arrayOf
(
"图片"
,
"拍摄"
,
"文件"
,
"位置"
)
companion
object
{
var
FUN_INIT
=
0
var
FUN_ADD
=
1
var
FUN_FEEL
=
2
}
init
{
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
widget_talk_input
,
this
,
true
)
a
=
context
as
Activity
initAll
()
}
private
fun
initAll
(){
initV
()
initEvent
()
}
private
fun
initV
(){
getView
()
initRv
()
initRvAdd
()
}
private
fun
getView
(){
rv
=
findViewById
(
R
.
id
.
rv
)
iv_add
=
findViewById
(
R
.
id
.
iv_add
)
iv_feel
=
findViewById
(
R
.
id
.
iv_feel
)
et
=
findViewById
(
R
.
id
.
et
)
layout_feel
=
findViewById
(
R
.
id
.
layout_feel
)
rv_add
=
findViewById
(
R
.
id
.
rv_add
)
layout_add
=
findViewById
(
R
.
id
.
layout_add
)
}
private
fun
initRv
(){
//TODO1
tt
()
rv
.
run
{
var
unit
=
3
+
1
layoutManager
=
GridLayoutManager
(
context
,
unit
)
adapter
=
object
:
BaseQuickAdapter
<
TalkTypeDataWithFeel
,
BaseViewHolder
>(
R
.
layout
.
widget_talk_input_with_feel
,
dataFel
){
override
fun
convert
(
holder
:
BaseViewHolder
,
item
:
TalkTypeDataWithFeel
)
{
holder
.
setText
(
R
.
id
.
tv
,
item
.
na
)
}
}
// addItemDecoration(GridSpacingItemWithDecoration(0))
}
}
private
fun
initRvAdd
(){
rv_add
.
run
{
var
unit
=
3
+
1
layoutManager
=
GridLayoutManager
(
context
,
unit
)
adapter
=
object
:
BaseQuickAdapter
<
TalkTypeDataWithAdd
,
BaseViewHolder
>(
R
.
layout
.
widget_talk_input_with_add
,
dataAdd
){
override
fun
convert
(
holder
:
BaseViewHolder
,
item
:
TalkTypeDataWithAdd
)
{
holder
.
setText
(
R
.
id
.
tv
,
item
.
na
)
}
}
}
}
private
fun
tt
(){
for
(
i
in
addInfoWordArr
.
indices
){
dataAdd
.
add
(
TalkTypeDataWithAdd
(
addInfoWordArr
[
i
],
1
,
1
))
}
for
(
i
in
0
..
5
){
dataFel
.
add
(
TalkTypeDataWithFeel
(
"hello"
,
1
,
1
))
}
}
private
fun
initEvent
(){
et
.
setOnEditorActionListener
{
tv
,
id
,
keyEvent
->
// if(id == EditorInfo.IME_ACTION_DONE){
// true
//
// }else{
//
// }
false
}
et
.
setOnFocusChangeListener
{
v
,
have
->
if
(
have
){
showOnlyKey
()
}
}
addListener
({
v
->
when
(
v
.
id
){
R
.
id
.
iv_add
->
handlerAddIv
()
R
.
id
.
iv_feel
->
handlerFeelIv
()
}
},
iv_add
,
iv_feel
)
}
private
fun
handlerAddIv
(){
var
value
=
et
.
text
.
toString
()
if
(
value
.
length
>
0
){
ToastUtil
.
show
(
value
)
return
}
et
.
clearFocus
()
if
(
layout_add
.
visibility
!=
View
.
VISIBLE
){
showLayoutType
(
layout_add
,
SHOW
)
showLayoutType
(
layout_feel
,
HIDE
)
if
(
getInputKey
(
a
)){
hideInputKey
(
et
)
}
}
else
{
showLayoutType
(
layout_add
,
HIDE
)
showInputKey
(
et
)
}
adjustTalkLayoutWithInput
?.
invoke
(
0
)
}
private
fun
handlerFeelIv
(){
et
.
clearFocus
()
if
(
layout_feel
.
visibility
!=
View
.
VISIBLE
){
showLayoutType
(
layout_feel
,
SHOW
)
showLayoutType
(
layout_add
,
HIDE
)
if
(
getInputKey
(
a
)){
hideInputKey
(
et
)
}
}
else
{
showLayoutType
(
layout_feel
,
HIDE
)
showInputKey
(
et
)
}
adjustTalkLayoutWithInput
?.
invoke
(
0
)
}
fun
restoreKeyInput
(){
showLayoutType
(
layout_feel
,
HIDE
)
showLayoutType
(
layout_add
,
HIDE
)
if
(
getInputKey
(
a
)){
hideInputKey
(
et
)
}
adjustTalkLayoutWithInput
?.
invoke
(
0
)
}
private
fun
showOnlyKey
(){
showLayoutType
(
layout_feel
,
HIDE
)
showLayoutType
(
layout_add
,
HIDE
)
if
(!
getInputKey
(
a
)){
showInputKey
(
et
)
}
adjustTalkLayoutWithInput
?.
invoke
(
0
)
}
fun
getFunTagWithInit
():
Boolean
{
return
layout_feel
.
visibility
!=
View
.
VISIBLE
&&
layout_add
.
visibility
!=
View
.
VISIBLE
&&
!
getInputKey
(
a
)
}
//调整聊天记录Ui
fun
setTalkLayoutWithInputListen
(
adjustTalkLayoutWithInput
:(
Int
)->
Unit
=
{}){
this
.
adjustTalkLayoutWithInput
=
adjustTalkLayoutWithInput
}
}
\ No newline at end of file
widget_onepage/src/main/java/com/juling/work_onepage/util/widget/TalkTypeDataWithAdd.kt
0 → 100644
浏览文件 @
ccc8b86d
package
com.juling.work_onepage.util.widget
data class
TalkTypeDataWithAdd
(
var
na
:
String
,
var
Res
:
Int
,
var
type
:
Int
)
\ No newline at end of file
widget_onepage/src/main/java/com/juling/work_onepage/util/widget/TalkTypeDataWithFeel.kt
0 → 100644
浏览文件 @
ccc8b86d
package
com.juling.work_onepage.util.widget
data class
TalkTypeDataWithFeel
(
var
na
:
String
,
var
Res
:
Int
,
var
type
:
Int
)
\ No newline at end of file
widget_onepage/src/main/res/drawable/talk_give_word.xml
0 → 100644
浏览文件 @
ccc8b86d
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<corners
android:radius=
"5dp"
/>
<solid
android:color=
"@color/red"
/>
</shape>
\ No newline at end of file
widget_onepage/src/main/res/drawable/talk_input_draw.xml
0 → 100644
浏览文件 @
ccc8b86d
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"@color/white"
/>
<corners
android:radius=
"5dp"
/>
</shape>
\ No newline at end of file
widget_onepage/src/main/res/layout/activity_interflow.xml
浏览文件 @
ccc8b86d
...
...
@@ -22,7 +22,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/constraintLayout2"
android:layout_width=
"0dp"
android:layout_height=
"
50dp
"
android:layout_height=
"
wrap_content
"
android:background=
"@color/color_AAAAAA"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
...
...
@@ -31,6 +31,15 @@
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintVertical_bias=
"1.0"
>
<com.juling.work_onepage.util.widget.TalkInputWidget
android:id=
"@+id/talk_input_widget"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
...
...
widget_onepage/src/main/res/layout/widget_talk_input.xml
0 → 100644
浏览文件 @
ccc8b86d
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<data></data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/color_f7f7f7"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/constraintLayout3"
android:layout_width=
"0dp"
android:layout_height=
"59dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"1.0"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintVertical_bias=
"0.0"
>
<EditText
android:id=
"@+id/et"
android:layout_width=
"270dp"
android:layout_height=
"39dp"
android:layout_marginStart=
"15dp"
android:background=
"@drawable/talk_input_draw"
android:padding=
"7dp"
android:text=
""
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.0"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<LinearLayout
android:id=
"@+id/ll_add"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"15dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"1.0"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<TextView
android:id=
"@+id/give_word_tv"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"@drawable/talk_give_word"
android:paddingLeft=
"7dp"
android:paddingRight=
"7dp"
android:text=
"文字"
android:textColor=
"@color/white"
android:visibility=
"gone"
/>
<ImageView
android:id=
"@+id/iv_add"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@mipmap/talk_input_add"
/>
</LinearLayout>
<ImageView
android:id=
"@+id/iv_feel"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"15dp"
android:background=
"@mipmap/talk_input_feel"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@+id/ll_add"
app:layout_constraintHorizontal_bias=
"1.0"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/layout_feel"
android:layout_width=
"0dp"
android:layout_height=
"399dp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.571"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/constraintLayout3"
app:layout_constraintVertical_bias=
"0.0"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/layout_add"
android:layout_width=
"0dp"
android:layout_height=
"100dp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/constraintLayout3"
app:layout_constraintVertical_bias=
"0.0"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_add"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
widget_onepage/src/main/res/layout/widget_talk_input_with_add.xml
0 → 100644
浏览文件 @
ccc8b86d
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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"
>
<ImageView
android:id=
"@+id/iv"
android:layout_width=
"50dp"
android:layout_height=
"50dp"
android:background=
"@mipmap/talk_input_feel"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"hello"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/iv"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
widget_onepage/src/main/res/layout/widget_talk_input_with_feel.xml
0 → 100644
浏览文件 @
ccc8b86d
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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"
>
<ImageView
android:id=
"@+id/iv"
android:layout_width=
"50dp"
android:layout_height=
"50dp"
android:background=
"@mipmap/talk_input_feel"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"hello"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/iv"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
widget_onepage/src/main/res/mipmap-xxhdpi/talk_input_add.png
0 → 100644
浏览文件 @
ccc8b86d
2.2 KB
widget_onepage/src/main/res/mipmap-xxhdpi/talk_input_feel.png
0 → 100644
浏览文件 @
ccc8b86d
2.5 KB
widget_onepage/src/main/res/mipmap-xxhdpi/talk_input_key.png
0 → 100644
浏览文件 @
ccc8b86d
601 Bytes
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论